递归解决:
代码:
class Solution {
public:
vector<vector<int> > combine(int n, int k) {
vector<vector<int>> v;
vector<int> vs;
if(k>n)
return v;
dfs(v,vs,0,k,n);
return v;
}
void dfs(vector<vector<int>> &v,vector<int> vs,int index,int k,int n){
if(n-index<k)
return;
if(!k)
v.push_back(vs);
for(int i=index+1;i<=n;i++){
vs.push_back(i);
dfs(v,vs,i,k-1,n);
vs.pop_back();
}
}
};
本文介绍了一种使用递归实现的组合算法,通过C++代码详细展示了如何生成所有可能的组合。该算法首先定义了一个递归函数dfs,用于寻找所有长度为k的组合,并将这些组合存储在一个二维向量中。
830

被折叠的 条评论
为什么被折叠?



