题目:
代码(首刷看解析):
class Solution {
public:
vector<vector<int>> combinationSum3(int k, int n) {
backtracing(k,n,1);
return res;
}
vector<vector<int>> res;
vector<int> temp;
void backtracing(int k,int n,int next){
int size=temp.size();
if(size==k&&n==0){
res.emplace_back(temp);//达到要求加入res数组
return;
}else if(n<0){
return;//超过最大数,返回
}
for(int i=next;i<=9;i++){
if(size>k||n-i<0) break;
temp.emplace_back(i);
//每次循环,i是加入temp数组的数,n-i是剩下的数的和,每次i+1后继续递归,才保证数字不重复
backtracing(k,n-i,i+1);
temp.pop_back();
}
}
};