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);
}

}