出处:本人新浪博客

给定正整数N和M,M<=N,求在1-N的数字中取M个数,存在的所有组合。
参考 http://xiaomage.blog.51cto.com/293990/74094

我的code
#include <iostream>
using namespace std;
int j=0;
void zuhe(int a[],int n,int m,int &j){
int i;
j=m;
for(i=1;i<=n;i++){

if (a[i]==1)
{
if (j==1)
{ cout<<i<<endl;
break;
}
else cout<<i<<' ';
j--;
}

}

j=0;
for (i=n;i>1;i--)
{
if (a[i]==1)
{ j++;

}
if (a[i]==0&&a[i-1]==1)
{ a[i]=1;
a[i-1]=0;
int temp;
for (temp=i+1;temp<i+1+j;temp++)
{
a[temp]=1;
}
for (;temp<=n;temp++)
{ a[temp]=0;
}
zuhe(a,n,m,j) ;

}
}

}
int main(){
int m,n ;
int *a;
while (cin>>n>>m&&n&&m&&m<=n&&n<=9)
{
a=new int[n+1];
int i;
a[0]=0;
for (i=1;i<=m;i++)
{
a[i]= 1 ;
}
for (;i<=n;i++)
{ a[i]=0;
}
zuhe(a,n,m,j);
delete a;
}
return 0;
}