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

机器人的运动范围

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

  public:
    int movingCount(int threshold, int rows, int cols) {
        if (rows <= 0 || cols <= 0 || threshold < 0)
            return 0;
        vector<vector<int>>matrix(rows, vector<int>(cols, 0));
        return dfs(matrix, threshold, rows, cols, 0, 0);
    }
    int dfs(vector<vector<int>>&matrix, int threshold, int rows, int cols, int x,
            int y) {
        if (!(valid(threshold,  x,  y,  rows,  cols))) return 0;
        if (matrix[x][y] != 0) return 0;
        matrix[x][y] = 1;
        return 1 + dfs(matrix, threshold, rows, cols, x + 1, y) +
               dfs(matrix, threshold, rows, cols, x - 1, y) +
               dfs(matrix, threshold, rows, cols, x, y + 1) +
               dfs(matrix, threshold, rows, cols, x, y - 1);
    }
    bool valid(int threshold, int x, int y, int rows, int cols) {
        if (x < 0 || x >= rows || y < 0 || y >= cols) {
            return false;
        }
        
        if (cal(x)+cal(y) > threshold) {
            return false;
        }
        return true;
    }
    int cal(int num){
        int sum=0;
        while(num){
            sum+=num%10;
            num=num/10;
        }
        return sum;
    }
};
全部评论

相关推荐

11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务