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

机器人的运动范围

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

class Solution {
public:
    int digitalSum(int num) {
        int sum = 0;
        while(num > 0) {
            sum += num % 10;
            num /= 10;
        }
        return sum;
    }
    int dfs(int threshold,int rows,int cols,int row,int col, 
            vector<vector<bool>> &isVisited) {
        if (row < 0 || col < 0 || row >= rows || 
            col >= cols || isVisited[row][col] || 
            digitalSum(row) + digitalSum(col) > threshold)
            return 0;
        isVisited[row][col] = 1;
        return dfs(threshold, rows, cols, row - 1, col, isVisited)
             + dfs(threshold, rows, cols, row + 1, col, isVisited)
             + dfs(threshold, rows, cols, row, col - 1, isVisited)
             + dfs(threshold, rows, cols, row, col + 1, isVisited)
             + 1;
    }
    int movingCount(int threshold, int rows, int cols) {
        if(threshold < 0 || rows <= 0 || cols <= 0) return 0;
        vector<vector<bool>> isVisited(rows, vector<bool>(cols));//标记
        return dfs(threshold, rows, cols, 0, 0, isVisited);
    }
};
全部评论

相关推荐

求offer的大角牛:不吃香菜
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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