题解 | #机器人的运动范围#

机器人的运动范围

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刷题 文章被收录于专栏

坚持!努力!学习

全部评论

相关推荐

找不到工作死了算了:没事的,雨英,hr肯主动告知结果已经超越大部分hr了
点赞 评论 收藏
分享
头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务