vector二维初始化
采用构造函数 vector<vector<int>> vec(10, vector<int>(8)); //10行8列,全部初始化为零
class Solution {
public:
int movingCount(int threshold, int rows, int cols)
{
if(threshold<=0||rows<=0||cols<=0){
return 0;
}
vector<int> vtemp(cols,0);
vector<vector<int>>reach(rows,vtemp);//记录是否已经走过
return movingCountCore(threshold,rows,cols,0,0,reach);
}
int getSum(int number){
int sum = 0;
while(number > 0){
sum += number%10;
number = number / 10;
}
return sum;
}
int movingCountCore(int threshold,int rows,int cols,int row,int col,vector<vector<int>>& reach){
int totalnum = getSum(row)+getSum(col);
if(row<0||row>=rows||col<0||col>=cols
||reach[row][col]==1||totalnum>threshold){
return 0;
}
reach[row][col]=1;
return 1 + movingCountCore(threshold,rows,cols,row-1,col,reach)+movingCountCore(threshold,rows,cols,row+1,col,reach) +movingCountCore(threshold,rows,cols,row,col+1,reach)+movingCountCore(threshold,rows,cols,row,col-1,reach);
}
};