机器人的运动范围 --剑指offer

public class Solution {
    public int movingCount(int threshold, int rows, int cols)
    {
        boolean[][] flag=new boolean[rows][cols];
        return moveCountCore(threshold,rows,cols,0,0,flag);
    }
    private int moveCountCore(int threshold,int rows,int cols,int i,int j,boolean[][]flag){
        //不满足条件时 返回0
        if(i<0||j<0||i>=rows||j>=cols||flag[i][j]==true||count(i)+count(j) > threshold){
            return 0;
        }
        flag[i][j] = true;
        //满足条件时 计算其余四个方格的情况并?1
        return 1 + moveCountCore(threshold,rows,cols,i+1,j,flag) +
                moveCountCore(threshold,rows,cols,i-1,j,flag) +
                moveCountCore(threshold,rows,cols,i,j+1,flag) +
                moveCountCore(threshold,rows,cols,i,j-1,flag);
    }
    /*
 计算一个数字的各个位的数字之和
 */
    private int count(int num){
        String str = String.valueOf(num);
        int sum=0;
        for(int i =0;i<str.length();i++){
            sum += str.charAt(i) - ‘0‘;
        }
        return sum;
    }
    public static void main(String[] args) {
    }
}