2747deb8b11627d7dbbd3f652c9c7849.png
55e0ec77c3ee502fa26aa4d438848058.png
48c2a17644533ca45a58aa3d578cb085.png
1a992edabebfa95f3ceb866fb20b7ce3.png
2152d67f7b8a840c9ccc72e9f384f727.png
8a1c044cab6f0787c3206d7d3e9cb872.png

import java.util.Scanner;
import java.util.*;
import java.util.stream.Collectors;
import java.math.BigInteger;
 
class Main {
    private static final int[][] dic = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
    private static int k = 1;
 
    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        int m = in.nextInt();
        int n = in.nextInt();
        int[][] matrix = new int[m][n];
        for (int x = 0; x < matrix.length; x++) {
            for (int y = 0; y < matrix[x].length; y++) {
            matrix[x][y] = in.nextInt();
            }
        }
 
        // 起点可以是每一个位置
        int result = 0;
        for (int x = 0; x < matrix.length; x++) {
            for (int y = 0; y < matrix[x].length; y++) {
                boolean[][] visited = new boolean[m][n];
                k = 1;
                bfs(matrix, visited, x, y);
                result = Math.max(k, result);
            }
        }
        System.out.print(result);
        
    }
 
    public static void bfs(int[][] matrix, boolean[][] visited, int x, int y) {
        visited[x][y] = true;
        //四个方向查看是否可行
        for (int[] d : dic) {
            int newX = x + d[0], newY = y + d[1];
            if (newX >= 0 && newX < matrix.length && newY >= 0 && newY < matrix[0].length) {
                if (!visited[newX][newY] && Math.abs(matrix[x][y] - matrix[newX][newY]) <= 1) {
                    k++;
                    bfs(matrix, visited, newX, newY);
                }
            }
        }
    }
 
}

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐