題目:
分析:
要設兩個記錄到哪了。
代碼:
using namespace std;
vector<vector<int> > vv;
void f(int nums,int c1,int c2,int k,vector<int> v)
{
if(c2==k){
vv.push_back(v);
return;
}
cout<<nums-c1+1<<" --- "<<v.size()-c2<<endl;
if(nums-c1+1<v.size()-c2) return;
if(nums-c1+1==v.size()-c2){
for(;c1<=nums;c1++,c2++)
{
v[c2]=c1;
}
vv.push_back(v);
return;
}
for(int i=c1;i<=nums;i++)
{
v[c2]=i;
f(nums,i+1,c2+1,k,v);
}
}
int main()
{
if(k==1)
{
vector<int> v(1,0);
for(int i=1;i<=nums;i++)
{
v[0]=i; vv.push_back(v);
}
return vv;
}
int nums=4;
int k=2;
vector<int> v(k,0);
f(nums,1,0,k,v);
cout<<vv.size()<<endl;
for(int i=0;i<vv.size();i++)
{
cout<<vv[i][0]<<" "<<vv[i][1]<<endl;
}
//return vv;
}