60% 带备忘录可能可以过吧 没时间想了。。。 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextInt(); int k = in.nextInt(); int[][] maze = new int[n][m]; int[] x = new int[]{0,0,1,-1}; int[] y = new int[]{-1,1,0,0}; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) maze[i][j] = in.nextInt();   } int max = 0; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++){ int num = maxStep(maze, x, y, k, m, n, i, j); if(num > max) max = num;   } } System.out.println(max);   } static int maxStep(int[][] maze, int[] x, int[] y, int k, int m, int n, int a, int b) { int max = 0; for(int g = 0; g < x.length; g++) { int l = a + x[g]; int r = b + y[g]; if(l >= 0 && l < n && r >=0 && r < m && ( maze[l][r] > maze[a][b] || k > 0 )) { int step; if(maze[l][r] > maze[a][b]) step = maxStep(maze, x, y, k, m, n, l, r); else   step = maxStep(maze, x, y, k-1, m, n, l, r); if(step > max) max = step;   } } return max + 1;   } }
点赞 评论

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务