【LeetCode】剑指 Offer 13. 机器人的运动范围
package offer;
public class Solution13 {
public static void main(String[] args) {
int m = 2;
int n = 3;
int k = 1;
Solution13 solution = new Solution13();
System.out.println(solution.method(m, n, k));
}
int m;
int n;
boolean[][] visted;
private int method(int m, int n, int k){
this.m = m;
this.n = n;
visted = new boolean[m][n];
return dfs(0, 0, k);
}
private int dfs(int i, int j, int k){
if(i >= m || j >= n || sum(i, j) > k || visted[i][j]) return 0;
visted[i][j] = true;
return 1 + dfs(i+1, j, k) + dfs(i, j+1, k);
}
private int sum(int i, int j){
int sum = 0;
while(i != 0){
sum += i % 10;
i /= 10;
}
while(j != 0){
sum += j % 10;
j /= 10;
}
return sum;
}
}