Related Topics:Backtracking
还是回溯法,一个系列的,因此做题技巧不变,函数递归,找到返回的条件并把dfs出的结果添加到vector里
这里需要注意的是count形参变量需要使用引用用法,记录上一次的游标位置,下一次迭代+1,不然报错
class Solution {
public:vector<vector<int>> combine(int n, int k) {
vector<int> temp;
vector<vector<int>> results;
int count=1;
recombine(n,count,k,temp,results);
return results;
}
void recombine(int n,int& count,int k,vector<int>& temp,vector<vector<int>>& results){
int a=count;
if(k==0){
results.push_back(temp);
return;
}
for(int i=count;i<=n;i++){
temp.push_back(i);
a++;
recombine(n,a,k-1,temp,results);
temp.pop_back();
}
}
};