题目描述
思路分析
组合型枚举(dfs)
三种枚举的方法详解在这里
实现组合型枚举有两种dfs思路:上面文章中的是枚举每个数选还是不选。
那这篇文章选用另一种思路来写:枚举k个位置选哪个数。
代码实现
class Solution {
public:
vector<vector<int>> ans;
vector<int> path;
vector<vector<int>> combine(int n, int k) {
dfs(n,k,1,1);
return ans;
}
void dfs(int n,int k,int u,int dex){
if(u==k+1){
ans.push_back(path);
return;
}
for(int i=dex;i<=n;i++){
path.push_back(i);
dfs(n,k,u+1,i+1);
path.pop_back();
}
}
};