import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int a = in.nextInt();
int b = in.nextInt();
int[][] data=new int[a][b];
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
data[i][j]=in.nextInt();
}
}
int res=subfunc(data);
System.out.println(res);
}
}
static int sum=0;
static int num=0;
public static int subfunc(int[][]data){
int row=data.length;
int col=data[0].length;
int max=0;
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
if(data[i][j]!=0){
sum=0;
num=0;
dfs(data,i,j);
if(num==1||num%2==0){
max=Math.max(sum,max);
}
}
}
}
return max;
}
public static void dfs(int[][] data,int i,int j){
int row=data.length;
int col=data[0].length;
if(i<0||j<0||i>=row||j>=col||data[i][j]==0){
return;
}
sum+=data[i][j];
num=num+1;
data[i][j]=0;
dfs(data,i+1,j);
dfs(data,i-1,j);
dfs(data,i,j+1);
dfs(data,i,j-1);
return;
}
}
岛屿问题(找出最大居民聚集地并返回居民数量)
最新推荐文章于 2022-10-11 11:13:44 发布