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