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], ]
#include<iostream>
#include<vector>
#include<cstdio>
using namespace std;
void com(int depth,int n,int k,vector<int> v,vector<vector<int> > &res)
{
if(v.size()==k)
{
res.push_back(v);
return ;
}
if(depth==n)
return ;
v.push_back(depth+1);
com(depth+1,n,k,v,res);
v.pop_back();
com(depth+1,n,k,v,res);
}
vector<vector<int> > combine(int n,int k)
{
vector<int> v;
vector<vector<int> > vv;
com(0,n,k,v,vv);
return vv;
}
int main(int argc,char *argv[])
{
freopen("input.txt","r",stdin);
vector<vector<int> > vv;
int n,k;
cin>>n>>k;
vv=combine(n,k);
cout<<"the size of vv is:"<<vv.size()<<endl;
int vvlen=vv.size();
for(int i=0;i<vv.size();i++)
{
int vlen=vv[i].size();
for(int j=0;j<vv[i].size();j++)
cout<<vv[i][j]<<" ";
cout<<endl;
}
return 0;
}