题解 | #机器人的运动范围#
机器人的运动范围
https://www.nowcoder.com/practice/6e5207314b5241fb83f2329e89fdecc8
#include <vector> class Solution { public: int res=0; int vis[4][2]={{-1,0},{1,0},{0,-1},{0,1}};//上下左右 bool iscoming(int row,int col,int threshold){ int a,b,c,sum; a=row/100; b=(row-a*100)/10; c=(row-a*100-b*10)%10; sum=a+b+c; a=col/100; b=(col-a*100)/10; c=(col-a*100-b*10)%10; sum+=a+b+c; if(sum>threshold) return false; return true; } void backtracking(int threshold, int rows, int cols,vector<vector<bool>>& flag,int r,int c){ if(r<0||r>=rows||c<0||c>=cols||!iscoming(r,c,threshold)||flag[r][c]){ return ; } res++; flag[r][c]=true; for(int i=0;i<4;i++){ backtracking(threshold, rows, cols,flag, r+vis[i][0], c+vis[i][1]); } } int movingCount(int threshold, int rows, int cols) { if(threshold<=0) return 1; vector<vector<bool>> flag(rows,vector<bool>(cols,false)); backtracking(threshold, rows, cols,flag,0,0); return res; } };