题目如下
思路与代码
遍历每个点,算出这点符不符合要求就好了。
中间会有些剪枝操作,看代码就懂了!
然后为了过程更加清晰,我们把数字分割和相加写成了函数!
class Solution {
public:
vector<int> splitnum(int n){
vector<int> ans;
if(n<10){
ans.push_back(n);
}else if(n<100){
ans.push_back(n/10);
ans.push_back(n%10);
}else if(n<1000){
ans.push_back(n/100);
ans.push_back(n%100/10);
ans.push_back(n%10);
}
return ans;
}
int getSum(vector<int> vec){
int sum=0;
for(auto i:vec){
sum+=i;
}
return sum;
}
int movingCount(int threshold, int rows, int cols) {
int cnt=0;
for(int i=0;i<rows;i++){
if(getSum(splitnum(i))>threshold) break;
for(int j=0;j<cols;j++){
if(getSum(splitnum(i))+getSum(splitnum(j))<=threshold)
cnt++;
else if(rows==1)
return cnt;
}
}
return cnt;
}
};