要求:1到9,不重复,k个数,组成n
思路:回溯,套路题不说了,时间100%,空间88%
class Solution {
public:
vector<vector<int>> v;
vector<int> tmp;
void dfs(int &k,int &n,int sum,int start){
if(tmp.size()==k){
if(sum==n)v.push_back(tmp);
return;
}
for(int i=start;i<=9;++i){
if(sum+i>n)return;//剪枝
tmp.push_back(i);
dfs(k,n,sum+i,i+1);
tmp.pop_back();
}
}
vector<vector<int>> combinationSum3(int k, int n) {
dfs(k,n,0,1);
return v;
}
};