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);
//            while (!queue.isEmpty()) {
//                int l = queue.remove();
//                int r = l / m;
//                int c = l % m;
//                if (staris[r][c] > maxH) {
//                    maxH = staris[r][c];
//                }
//                for (int k = 0; k < 4; k++) {
//                    int nr = r + next[k][0];
//                    int nc = c + next[k][1];
//                    if (nc >= 0 && nr >= 0 && nc < m && nr < n && staris[nr][nc] == staris[r][c] + 1) {
//                        queue.add(nr * m + nc);
//                    }
//                }
//            }
//            if(maxH==1){
//                maxH--;
//            }
//            System.out.println(maxH);
        }
    }

    private static int[][] next = new int[][]{{-1, 0}, {1, 0}, {0, -1}, {0, 1}};

    public static int dfs(int i, int j, int[][] staris, int step) {
        int[] ints = new int[]{step,step,step,step};
        for (int k = 0; k < 4; k++) {
            int r = i + next[k][0];
            int c = j + next[k][1];
            if (c >= 0 && r >= 0 && c < staris[0].length && r < staris.length &&
                    staris[r][c] > staris[i][j]) {
                ints[k] = dfs(r, c, staris, step + 1);
            }
        }
        Arrays.sort(ints);
        return ints[3];
    }
}

Double click to view unformatted code.


Back to problem 17