整体思路倒是大差不差,注意标记和细节
class Solution {
int res = 0;
public int movingCount(int m, int n, int k) {
boolean[][] visited = new boolean[m][n];
dfs(m,n,visited,k,0,0);
return res;
}
void dfs(int m, int n,boolean[][] visited, int k, int i, int j){
if(i<0||j<0||i>=m||j>=n||visited[i][j]) return ;
int sum = 0, a= i, b = j;
while(a != 0){
sum += a%10;
a = a/10;
}
while(b != 0){
sum += b%10;
b = b/10;
}
if(sum > k) return ;
else{
res++;
visited[i][j] = true;
}
dfs(m,n,visited,k,i,j+1);
dfs(m,n,visited,k,i,j-1);
dfs(m,n,visited,k,i+1,j);
dfs(m,n,visited,k,i-1,j);
}
}