思路:简单的dfs吧,找到可以到达的点。
class Solution {
vector<vector<int>> a=vector<vector<int>>(110,vector(110,0));
public:
int movingCount(int m, int n, int k) {
return (dfs(m,n,0,0,k));
}
int dfs(int m,int n,int x,int y,int k){
if(x<0||x>=m||y<0||y>=n||(cc(x)+cc(y))>k||a[x][y]) return 0;
a[x][y]=1;
return (dfs(m,n,x+1,y,k)+dfs(m,n,x,y+1,k)+1);
}
int cc(int x){
int sum=0;
while(x){
sum+=(x%10);
x/=10;
}
return sum;
}
};