FE07EEE1F0268775C646E844B05BFF2D.png
public class Solution {
//用来保存结果
public int[][] res;
//用来计算1的个数
public int sum = 0;
//写到结果中
void writeRes(int[][] res){
for(int i=0;i<res.length;i++){
for(int j=0;j<res[i].length;j++){
if(res[i][j]==1)
res[i][j] = sum;
}
}
}
//深度优先
void dfs(int[][] m,int i,int j){
if(i<0 || i>=m.length || j<0 || j>=m[0].length)
return;
if(m[i][j] == 0)
return;
sum++;
//如果为1 就把它变成0,直到把所有的岛屿都给沉没掉
m[i][j] = 0;
res[i][j] = 1;
dfs(m,i+1,j);
dfs(m,i,j+1);
dfs(m,i,j-1);
}
public int[][] solute(int[][] m){
res = new int[m.length][m[0].length];
for(int i=0;i<m.length;i++){
for(int j=0;j<m[i].length;j++){
sum=0;
dfs(m,i,j);
if(sum > 0)
writeRes(res);
}
}
for(int i=0;i<m.length;i++){
for(int j=0;j<m[i].length;j++){
System.out.print(res[i][j] + " ");
}
System.out.print('\n');
}
return res;
}
public static void main(String[] args) {
int[][] m = {
{0,0,1,1},
{1,1,1,1},
{0,0,1,0}
};
new Solution().solute(m);
}
}