题解 | #机器人的运动范围# 递归+辅助vector

机器人的运动范围

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

#include <vector>
class Solution {
public:
    int res = 0;
    void find_sum(vector<vector<int>>& loc, int threshold, int ro, int co){
        if((ro>=0 && ro<loc.size()) && (co>=0&&co<loc[0].size()) && loc[ro][co] == 1){
            return;
        }else if(ro<0 || ro >= loc.size() ||co < 0 || co >= loc[0].size()){
            // 处理出入超出数组界限的逻辑
            return;
        }
        int tar = (ro/100 + (ro/10)%10 + (ro%10)) + (co/100 + (co/10)%10 + (co%10));
        if(tar > threshold){
            return;
        }
        res++;
        loc[ro][co] = 1;
        find_sum(loc, threshold, ro-1, co);
        find_sum(loc, threshold, ro+1, co);
        find_sum(loc, threshold, ro, co-1);
        find_sum(loc, threshold, ro, co+1);
    }
    int movingCount(int threshold, int rows, int cols) {
        vector<vector<int>> loc(rows, vector<int>(cols,0));
        find_sum(loc, threshold, 0, 0);
        return res;       
    }
};

递归的意义是在数学公式不明确的时候采用的一种穷举的方式,合适的递归逻辑可以考虑到所有可能发生的情况。

采用辅助数组的意义在于,递归的逻辑中需要参考以往递归的结果,这个逻辑一般是通过在递归函数的返回值上建立逻辑判断的,但是该题目情况特殊,所以采用辅助数组存储相关结论并建立判断逻辑。

全部评论

相关推荐

暴走萝莉莉:这是社招场吧,作为HR说个实话:这个维护关系的意思是要有政府资源,在曾经的工作中通过人脉资源拿下过大订单的意思。这个有相关管理经验,意思也是真的要有同岗位经验。应酬什么的对于业务成交来说就算不乐意也是常态,就是要求说话好听情商高,酒量好。
点赞 评论 收藏
分享
Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务