movingCount
来源:互联网 发布:it governance 编辑:程序博客网 时间:2024/06/05 23:48
class Solution {private: int count=0; vector<vector<int>> directions{{-1,0},{1,0},{0,1},{0,-1}}; bool judge(int threshold,int row,int col) { int judgecount=0; while(row>0) { judgecount+=(row%10); row/=10; } while(col>0) { judgecount+=(col%10); col/=10; } return judgecount<=threshold; } void movinghelper(int threshold,int rows,int cols,int currow,int curcol,vector<vector<bool>> &visited) { if(!judge(threshold,currow,curcol)) { visited[currow][curcol]=true; return; } count++; visited[currow][curcol]=true; for(int i=0;i<4;i++) { int newrow=currow+directions[i][0]; int newcol=curcol+directions[i][1]; if(newcol>=0&&newcol<cols&&newrow>=0&&newrow<rows&&(!visited[newrow][newcol])) { movinghelper(threshold,rows,cols,newrow,newcol,visited); } } }public: int movingCount(int threshold, int rows, int cols) { vector<vector<bool>> visited(rows,vector<bool>(cols,false)); count=0; movinghelper(threshold,rows,cols,0,0,visited); return count; }};
0 0