View Code of Problem 17

import java.util.Arrays;
import java.util.Scanner;

public class Main {


	public static void main(String[] args) {
		// TODO Auto-generated method stub
	
		Scanner scanner=new Scanner(System.in);
		while(scanner.hasNext()) {
			int n=scanner.nextInt();
			int m=scanner.nextInt();
			int[][] stairs=new int[n][m];
			for(int i=0;i<n;i++) {
				for(int j=0;j<m;j++) {
					stairs[i][j]=scanner.nextInt();
				}
			}
			
			int maxStep=Integer.MIN_VALUE;
			for(int i=0;i<n;i++) {
				for(int j=0;j<m;j++) {
					int temp=dfs(i,j,stairs,0);
					if(temp>maxStep) {
						maxStep=temp;
					}
				}
			}
			System.out.println(maxStep);
		}
	}

	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