这个其实很简单,就是把从N个数取出M个数,每取一个数,就从剩余的N-1个数取剩余的M-1个数,当去完的时候输出结果就行了,这个问题用递归很好解决。下面是代码。
#include <stdio.h>
#define MAXIN 10
int a[MAXIN]={0};
int counts=0;
void comb(int n, int m)
{
if (m<=0)
{
for (int j=1;j<=counts;j++)
printf("%d ",a[j]);
printf("\n");
return;
}
for (int i=n;i>=m;i--)
{
a[m]=i;
comb(i-1,m-1);
}
}
int main()
{
int n, m;
scanf("%d%d", &n, &m);
counts=m;
comb(n, m);
return 0;
}