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

机器人的运动范围

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

回溯做法,遇到一个问题,形参前面&,一开始并不知道作用,后来发现是将形参与实参地址绑定,形参变化,实参也跟着变。
代码:

class Solution {
private:
    vector<vector<int>> ret;
public:
    int check(int n){
        int sum = 0;
        while(n){
            sum += n%10;
            n = n/10;
        }
        return sum;
    }

    int sea(int threshold, int rows, int cols, int x, int y, vector<vector<int>> &m){
        if(threshold < (check(x) + check(y)) || x<0 || y<0 || x>rows-1 || y>cols-1 || ret[x][y] == 1){
            return 0;
        }
        ret[x][y] = 1;
        return 1 + sea(threshold, rows, cols, x-1, y, ret) + sea(threshold, rows, cols, x+1, y, ret) + sea(threshold, rows, cols, x, y-1, ret) + sea(threshold, rows, cols, x, y+1, ret);
    }

    int movingCount(int threshold, int rows, int cols) {
        ret = vector<vector<int>> (rows, vector<int>(cols,0));
        return sea(threshold, rows, cols, 0, 0, ret);
    }
};
全部评论

相关推荐

尊嘟假嘟点击就送:加v细说,问题很大
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务