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

机器人的运动范围

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

class Solution {
  public:
    // 深度优先搜索也是会全部找完的
    int cnt = 0;
    queue<pair<int, int>> q;
    vector<vector<bool>> visited;
    int movingCount(int threshold, int rows, int cols) {
        if(threshold <= 0)
            return 1;
        visited.resize(rows, vector<bool>(cols, false));
        q.push(make_pair(0, 0));
        int i, j;
        while (!q.empty()) {
            i = q.front().first, j = q.front().second;
            cout<<i<<' '<<j<<' '<<q.size()<<' ';
            q.pop();
            if (i>=rows||j>=cols||count_num(i, j)>threshold||visited[i][j]) continue;
            else{
                visited[i][j] = true;
                ++cnt;
            }
            cout<<cnt<<'-';
            q.push(make_pair(i+1, j));
            q.push(make_pair(i, j+1));
        }
        return cnt;
    }

    int count_num(int i, int j) {
        int c = 0;
        while (i != 0) {
            c += i % 10;
            i /= 10;
        }
        while (j != 0) {
            c += j % 10;
            j /= 10;
        }
        return c;
    }
};

front写成back检查了一个小时。。。牛客调试也用不了。。。

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务