面试题13. 机器人的运动范围
思路:dfs+判断
class Solution {
public:
int movingCount(int m, int n, int k) {
res = 0;
dfs(0,0,m,n,k);
return res;
}
private:
int res;
bool flag[105][105];
vector<vector<int> >v = {{1,0},{-1,0},{0,1},{0,-1}};
void dfs(int x, int y, int& m, int& n, int &k){
// cout<<x<<y<<endl;
flag[x][y]=true;
res++;
for(int i=0;i<4;i++){
int xx = x+v[i][0];
int yy = y+v[i][1];
if(xx>=0 && yy>=0 && xx<m && yy<n && flag[xx][yy]==false && judge(xx,yy)<=k){
dfs(xx, yy, m, n, k);
}
}
}
int judge(int x, int y){
int sum=0;
while(x){
sum = sum + x%10;
x = x/10;
}
while(y){
sum = sum + y%10;
y = y/10;
}
return sum;
}
};