当前位置: 首页 > news >正文

48Days-Day19 | ISBN号,kotori和迷宫,矩阵最长递增路径

ISBN号

ISBN号码_牛客题霸_牛客网

算法原理

模拟,根据题意模拟就可以了,注意一下余数为10的时候要特别判断一下是不是X就行了

代码

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);char[] s = scan.next().toCharArray();int sum = 0, count = 0;for(int i = 0; i < s.length - 1; i++) {if(i == 1 || i == 5 || i == 11) continue;count++;sum += (s[i] - '0') * count;}boolean flg = false;if(s[s.length - 1] == 'X') flg = (sum % 11 == 10);  //特别判断一下为10的情况else flg = (sum % 11 == s[s.length - 1] - '0');if(flg) System.out.println("Right");else {if(sum % 11 == 10) s[s.length - 1] = 'X';else s[s.length - 1] = Character.forDigit(sum % 11, 10);StringBuffer sb = new StringBuffer();for(char x: s) sb.append(x);System.out.println(sb.toString());}}
}

kotori和迷宫

kotori和迷宫

算法原理

迷宫类最短路径dfs问题的扩展,原理都差不多,就是最后输出的时候单独要多记录一下出口数量而已

代码

import java.util.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static int N = 35;public static int x1, y1;  //记录起点位置public static int n, m;public static char[][] arr = new char[N][N];public static int[][] dist = new int[N][N];public static int[] dx = {0, 0, -1, 1};public static int[] dy = {1, -1, 0, 0};public static void bfs() {for(int i = 0; i < m; i++)for(int j = 0; j < n; j++)dist[i][j] = -1;Queue<int[]> q = new LinkedList<>();q.add(new int[]{x1, y1});dist[x1][y1] = 0;while(!q.isEmpty()) {int[] tmp = q.poll();int a = tmp[0], b = tmp[1];for(int i = 0; i < 4; i++) {//遍历该点的上下左右的四个点int x = a + dx[i], y = b + dy[i];//坐标是合法的,该点没有记录过,且不是墙if(x >= 0 && x < m && y >= 0 && y < n && dist[x][y] == -1 && arr[x][y] != '*') {dist[x][y] = dist[a][b] + 1;if(arr[x][y] != 'e') {q.add(new int[]{x, y});}}}}}public static void main(String[] args) {Scanner scan = new Scanner(System.in);m = scan.nextInt(); n = scan.nextInt();for(int i = 0; i < m; i++) {char[] tmp = scan.next().toCharArray();for(int j = 0; j < n; j++) {arr[i][j] = tmp[j];if(arr[i][j] == 'k') {x1 = i; y1 = j;}}}bfs();int count = 0, res = 1000;    //count记录出口个数for(int i = 0; i < m; i++)for(int j = 0; j < n; j++) {if(arr[i][j] == 'e' && dist[i][j] != -1) {    //为-1说明无法到达count++;res = Math.min(res, dist[i][j]);}}if(count == 0) System.out.println("-1");else System.out.println(count + " " + res);}
}

矩阵最长递增路径

矩阵最长递增路径_牛客题霸_牛客网

算法原理

递归 + 记忆搜索

代码

import java.util.*;public class Solution {public static int m, n;public static int[] dx = {0, 0, -1, 1};public static int[] dy = {1, -1, 0, 0};public static int[][] memo = new int[1010][1010];public int dfs(int[][] matrix, int i, int j) {if (memo[i][j] != -1) return memo[i][j];int len = 1;for (int k = 0; k < 4; k++) {int x = i + dx[k], y = j + dy[k];if (x >= 0 && x < m && y >= 0 && y < n && matrix[x][y] > matrix[i][j])len = Math.max(len, 1 + dfs(matrix, x, y));}memo[i][j] = len;return len;}public int solve (int[][] matrix) {// write code herem = matrix.length;n = matrix[0].length;for (int i = 0; i < m; i++)for (int j = 0; j < n; j++) {memo[i][j] = -1;}int res = 1;for (int i = 0; i < m; i++)for (int j = 0; j < n; j++) {res = Math.max(res, dfs(matrix, i, j));}return res;}
}

http://www.lryc.cn/news/622336.html

相关文章:

  • Point-LIO技术文档中文翻译解析
  • 文章数据发布到苹果CMS(MacCMS)网站技巧
  • ETH持续上涨推动DEX热潮,交易活跃度飙升的XBIT表现强势出圈
  • 图论Day3学习心得
  • 【机器学习】核心分类及详细介绍
  • 开疆智能ModbusTCP转Ethernet网关连接FBOX串口服务器配置案例
  • 【iOS】多线程原理
  • 昇腾AI自学Day1-- 深度学习基础工具与数学
  • C语言基础08——文件的输入与输出
  • git clone https://gh.llkk.cc/
  • 什么才是真正的白盒测试?
  • 高并发接口性能优化实战:从200ms到20ms的蜕变之路
  • Python正则表达式处理Unicode字符完全指南:从基础到高级实战
  • Python工具箱系列(六十四)
  • Java Lambda表达式是什么,怎么用
  • JavaWeb开发_Day12
  • 研学智得AI-知网推出的AI学术文献阅读工具
  • OpenCV---morphologyEx形态学操作
  • Java中MybatisPlus使用多线程多数据源失效
  • Vue 侦听器(watch 与 watchEffect)全解析3
  • 如何在 FastAPI 中玩转 APScheduler,让任务定时自动执行?
  • 快速了解PCA降维
  • 《Python列表和元组:从入门到花式操作指南》
  • 接口自动化测试步骤
  • Stability AI技术浅析(二):LDM
  • productionSourceMap:true -> 编译的时候不是那么乱码了
  • 详解 k 近邻(KNN)算法:原理、实践与调优 —— 以鸢尾花分类为例
  • C++面试——内存
  • docker重启或系统重启后harbor自动启动
  • MySQL快速恢复数据的N种方案完全教程