import java.util.*; public class Solution {
//和计算岛屿最大面积的思路是一样的,建立一个二维矩阵,里面的值就是0和1
public int area = 0;
public int movingCount(int threshold, int rows, int cols) {
String iString;
String jString;
char[] iChars;
char[] jChars;
int iSum = 0;
int jSum = 0;
int[][] array = new int[rows][cols];
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[0].length; j++) {
iString = i+"";
jString = j+"";
iChars = iString.toCharArray();
jChars = jString.toCharArray();
for (char iChar : iChars) {
iSum += (iChar - 48);
}
for (char jChar : jChars) {
jSum += (jChar-48);
}
if(iSum+jSum<=threshold){
array[i][j]=1;
} else {
array[i][j]=0;
}
iSum=0;
jSum=0;
}
}
dfs(array,0,0);
return area;
}
public void dfs(int[][] grid, int i, int j) {
if (i < 0 || i >= grid.length || j < 0 || j >= grid[0].length || grid[i][j] == 0)
return;
area++;
grid[i][j] = 0;
dfs(grid, i - 1, j);
dfs(grid, i + 1, j);
dfs(grid, i, j + 1);
dfs(grid, i, j - 1);
}
}