题目描述
解法一:DFS/BFS
详细参考 面试题13. 机器人的运动范围( DFS / BFS ,清晰图解)
解法二:递推
,初始时
注意判断不可到达点和边界就好了
class Solution {
public:
int get(int x){
int res = 0;
while(x>0)
{
res += x%10;
x /= 10;
}
return res;
}
int movingCount(int m, int n, int k) {
if(!k) return 1;
vector<vector<int>> vis(m, vector<int>(n, 0));
int ans = 1;
vis[0][0] = 1;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if((i==0 && j==0) || (get(i)+get(j)>k)) continue;
if(j-1>=0) vis[i][j] |= vis[i][j-1];
if(i-1>=0) vis[i][j] |= vis[i-1][j];
ans += vis[i][j];
}
}
return ans;
}
};