import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { int n = scanner.nextInt(); int m = scanner.nextInt(); int[][] staris = new int[n][m]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { staris[i][j] = scanner.nextInt(); } } int maxH = Integer.MIN_VALUE; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { int step = dfs(i, j, staris, 0); if (step > maxH) { maxH = step; } } } System.out.println(maxH); } } private static int[][] direction=new int[][] {{-1,0},{1,0},{0,-1},{0,1}}; public static int dfs(int r,int c,int[][] stairs,int step) { int[] steps=new int[] {step,step,step,step}; for(int k=0;k<4;k++) { int x=r+direction[k][0]; int y=c+direction[k][1]; if(x>=0&&y>=0&&x<stairs.length&&y<stairs[0].length&&stairs[x][y]>stairs[r][c]) { steps[k]=dfs(x,y,stairs,step+1); } } Arrays.sort(steps); return steps[3]; } } |
Double click to view unformatted code.