题解 | #机器人的运动范围# 递归+辅助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; } };
递归的意义是在数学公式不明确的时候采用的一种穷举的方式,合适的递归逻辑可以考虑到所有可能发生的情况。
采用辅助数组的意义在于,递归的逻辑中需要参考以往递归的结果,这个逻辑一般是通过在递归函数的返回值上建立逻辑判断的,但是该题目情况特殊,所以采用辅助数组存储相关结论并建立判断逻辑。