还是递归的思想,牛客网上剑指offer板块最后两题做法一模一样。终于刷完了。。。
class Solution {
public:
int movingCount(int threshold, int rows, int cols)
{
vector<int> vtemp(cols,0);
vector<vector<int> >reach(rows,vtemp);
return count(threshold, 0, 0,reach);
}
int count(int threshold, int row, int col,vector<vector<int>>& reach)
{
if(row<0||row>=reach.size()||col<0||col>=reach[0].size()
||reach[row][col]==1||sum(to_string(row))+sum(to_string(col))>threshold){
return 0;
}
reach[row][col]=1;
return 1+count(threshold, row, col-1,reach)+count(threshold, row, col+1,reach)
+count(threshold, row-1, col,reach)+count(threshold, row+1, col,reach);
}
int sum(string str){
int re=0;
for(char c:str){
re+=c-'0';
}
return re;
}
};