一、题目
二、思路
1、经典的回溯题,从1到n中找出k个数的组合
2、通过回溯,先添加到vector,dfs完了之后又pop_back()
3、dfs传入参数为传入数组,n,k,开始的数,当前数的个数
4、调用dfs的时机为for (int i = start; i <= n; ++i)
三、代码
class Solution {
public:
vector<vector<int>>res;
vector<int>temp;
vector<vector<int>> combine(int n, int k) {
dfs(n,k,0,0);
return res;
}
void dfs(int &n, int &k,int start,int len){
if(len==k){
res.emplace_back(temp);
return;
}
for(int i=start;i<n;++i){
temp.emplace_back(i+1);
//传入数组,n,k,开始的数,当前数的个数
dfs(n,k,i+1,len+1);
temp.pop_back();
}
}
};