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

机器人的运动范围

http://www.nowcoder.com/practice/6e5207314b5241fb83f2329e89fdecc8

class Solution {
public:
    int nex[4][2] = {{0,-1},{0,1},{-1,0},{1,0}};
    bool vis[100][100];
    int r;
    int c;
    int getsum(int x){
        int ans = 0;
        while(x){
            ans += x%10;
            x /= 10;
        }
        return ans;
    }
    int ans;
    void bfs(int x,int y,int k){
        cout << ans << endl;                                                                                               
        ans++;
        for(int i=0; i<4; i++){
            int xx = x + nex[i][0];
            int yy = y + nex[i][1];
            if(xx>=0 && yy>=0 && xx<r && yy<c && !vis[xx][yy] && getsum(xx)+getsum(yy)<=k){
                vis[xx][yy] = 1;
                bfs(xx,yy,k);  
                //不能ans += bfs(xx,yy,k) 一条路径多次累加
                //不能bfs(xx,yy,k,ans+1) 这种只会取最长的那条路径的
                //不用vis归0 每个点只要求过一次即可
            }
        }
    }
    int movingCount(int threshold, int rows, int cols) {
        for(int i=0; i<rows; i++)
            for(int j=0; j<cols; j++)
                vis[i][j] = 0;
        vis[0][0] = 1;
        r = rows;
        c = cols;
        ans = 0;
        bfs(0,0,threshold);
        return ans;
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 11:35
程序员小白条:话太多,没实力和学历,差不多回答回答就行了,身份地位不一样
点赞 评论 收藏
分享
06-12 10:50
门头沟学院 Java
你的不定积分没加C:我怎么在学院群看到了同样的话
点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
07-02 13:52
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务