题目描述
思路分析
dfs暴搜即可。
代码实现
class Solution {
public:
int res=0;
int st[110][110];
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
int movingCount(int k, int n, int m) {
st[0][0]=1;
dfs(0,0,n,m,k);
return res;
}
void dfs(int x,int y,int n,int m,int k){
int t=sum(x)+sum(y);
if(t<=k){
st[x][y]=1;
res++;
}
else{
st[x][y]=2;
return;
}
for(int i=0;i<4;i++){
int nx=x+dx[i],ny=y+dy[i];
if(nx>=0&&nx<n&&ny>=0&&ny<m&&!st[nx][ny]){
dfs(nx,ny,n,m,k);
}
}
}
int sum(int x){
int res=0;
while(x) res+=x%10,x/=10;
return res;
}
};