组合总和的问题都有一个问题,为了不选定重复的数,都要定义一个变量i,记录当前遍历到哪个数,防止答案重复,比如124,142是不是重复了。
class Solution {
public:
vector<vector<int>>res;
vector<int>ans;
vector<vector<int>> combinationSum3(int k, int n) {
dfs(k,n,0,1);
return res;
}
void dfs(int k,int n,int x,int y){
if(n==0&&x==k){
res.push_back(ans);
return ;
}
for(int i=y;i<=9;i++){
if(i<=n){
ans.push_back(i);
dfs(k,n-i,x+1,i+1);
ans.pop_back();
}
}
}
};