Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.
For example,
If n = 4 and k = 2, a solution is:
[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]
</pre><pre name="code" class="cpp">class Solution {
public:
vector<vector<int> > res;
vector<int> v;
vector<vector<int> > combine(int n, int k) {
generate(n,k,0,1);
return res;
}
void generate(int n,int k,int dep,int start){
if(dep == k)
res.push_back(v);
else{
for(int i = start;i <= n;i ++){
v.push_back(i);
generate(n,k,dep + 1,i + 1);
v.pop_back();
}
}
}
};
本文介绍了一个组合生成算法,该算法能够从整数n中选择k个不同的数字并返回所有可能的组合。通过递归的方式实现,避免了重复组合的出现。
478

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



