【华为OD机试真题2023 JAVA】机器人活动区域
·
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);
}
}
}
}
}
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)