思路差不多,我的AC了import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Main { /*请完成下面这个函数,实现题目要求的功能 当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^ ******************************开始写代码******************************/ static int longpath(int[][] matrix) { int rows = matrix.length; int cols = matrix[0].length; int path = Integer.MIN_VALUE; for(int i=0;i<rows;i++) { for(int j=0;j<cols;j++) { boolean[][] visited = new boolean[rows][cols]; int res = helper(matrix, rows, cols, i, j, visited); System.out.println(res); path = Math.max(path, res); } } return path; } /******************************结束写代码******************************/ public static int helper(int[][] matrix, int rows, int cols, int x, int y, boolean[][] visited) { if(x<0 || x>=rows || y<0 || y>=cols || visited[x][y]) return 0; visited[x][y] = true; int res1 = 1; int res2 = 1; int res3=1; int res4=1; if(x+1<rows && matrix[x+1][y] > matrix[x][y]) res1+=helper(matrix,rows,cols,x+1,y,visited); if(x-1>=0 && matrix[x-1][y] > matrix[x][y]) res2+=helper(matrix,rows,cols,x-1,y,visited); if(y+1<cols && matrix[x][y+1] > matrix[x][y]) res3+=helper(matrix,rows,cols,x,y+1,visited); if(y-1>=0 && matrix[x][y-1] > matrix[x][y]) res4+=helper(matrix,rows,cols,x,y-1,visited); visited[x][y] = false; return Math.max(Math.max(res1, res2), Math.max(res3, res4)); } public static void main(String[] args){ Scanner in = new Scanner(System.in); int res; int _matrix_rows = 0; int _matrix_cols = 0; _matrix_rows = Integer.parseInt(in.nextLine().trim()); _matrix_cols = Integer.parseInt(in.nextLine().trim()); int[][] _matrix = new int[_matrix_rows][_matrix_cols]; for(int _matrix_i=0; _matrix_i<_matrix_rows; _matrix_i++) { for(int _matrix_j=0; _matrix_j<_matrix_cols; _matrix_j++) { _matrix[_matrix_i][_matrix_j] = in.nextInt(); } } if(in.hasNextLine()) { in.nextLine(); } res = longpath(_matrix); System.out.println(String.valueOf(res)); } }