题目:求从自然数1..m中任取r个数字的组合:
int count=0;
void comb(int *,int,int,int);
void main(){ //从自然数1..m中任意选取r个数字的组合
int m,k,r;
int buffer[MAXSIZE];
m=5;
r=k=3;
comb(buffer,m,k,r);
printf("/ntotal:%d",count);
}
void comb(int buffer[],int m,int k,int r){
//从[1..m]中选取k的数的组合
int i,j;
for(i=m;i>=k;i--){
buffer[k-1]=i;
if(k>1) comb(buffer,m-1,k-1,r);
else{
for(j=r-1;j>=0;j--)
printf("%d ",buffer[j]);
count++;
puts("");
}//else
}
}