您的位置:首页 > 其它

排列组合Leetcode Combinations

2013-05-14 22:55 10 查看
n个数取k个的集合

自己写的代码:

class Solution {
public:
vector<int>v1;
vector<vector<int>>v;
vector<vector<int>> combine(int n, int k) {
v.clear();
vector<int>exist(n,0);
add(exist,n,k,0);
return v;
}
void add(vector<int>&exist,int n,int k,int cur)
{
if(cur<n)
{
exist[cur]=1;
add(exist,n,k,cur+1);
exist[cur]=0;
add(exist,n,k,cur+1);
}
if(cur==n&&count(exist.begin(),exist.end(),1)==k)
{
v1.clear();
for(int i=0;i<n;i++)
{
if(exist[i]==1)
v1.push_back(i+1);
}
v.push_back(v1);
//return;
}
}
};


参考代码

class Solution {
private:
vector<vector<int> > ret;
vector<int> a;
public:
void solve(int dep, int maxDep, int n, int start)
{
if (dep == maxDep)
{
ret.push_back(a);
return;
}
for(int i = start; i <= n; i++)
{
a[dep] = i;
solve(dep + 1, maxDep, n, i + 1);
}
}
vector<vector<int> > combine(int n, int k) {
a.resize(k);
ret.clear();
solve(0, k, n, 1);
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: