题解 | #机器人的运动范围#
机器人的运动范围
https://www.nowcoder.com/practice/6e5207314b5241fb83f2329e89fdecc8
#include <vector>
class Solution {
public:
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
int res=0;
int cal(int n)
{
int sum=0;
while(n){
sum+=(n%10);
n/=10;
}
return sum;
}
void dfs(int i,int j,int rows,int cols,int threshold,vector<vector<bool>> &vis)
{
if(i<0||i>=rows||j<0||j>=cols||!vis[i][j])
return;
if(cal(i)+cal(j)>threshold)
return;
res+=1;
vis[i][j]=false;
for (int k=0; k<4; k++) {
dfs(i+dir[k][0],j+dir[k][1],rows,cols,threshold,vis);
}
}
int movingCount(int threshold, int rows, int cols) {
if (threshold<=0) {
return 1;
}
vector<vector<bool>> vis(rows,vector<bool>(cols,true));
dfs(0,0,rows,cols,threshold,vis);
return res;
}
};
第一次做回溯偏难的题目,很多地方还不理解,有大神有学习、指点的地方,希望可以留言。谢谢大家
#剑指OFFER#剑指offer刷题 文章被收录于专栏
坚持!努力!学习

