View Code of Problem 17

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.


Back to problem 17