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;
}
};
movingCount
最新推荐文章于 2022-07-26 13:37:12 发布