求组合数: 求n个数(1....n)中k个数的组合....
求组合数: 求n个数(1....n)中k个数的组合....
如:combination(5,3)
要求输出:543,542,541,532,531,521,432,431,421,321
这个问题在网上有很多答案只能实现3个数的排列,题目明明要求是K个数的组合
所以问问大家怎么实现K个数的组合
还有用递归实现的方法!!!!
[解决办法]
#include <stdio.h>
#define MAXN 100
int a[MAXN]={0};
int counts=0;
void comb(int m,int k)
{ int i,j;
for (i=m;i>=k;i--)
{
a[k]=i;
if (k>1)
comb(i-1,k-1);
else
{
counts++;
for (j=a[0];j>0;j--)
printf("%d ",a[j]);
printf("\n");
}
}
}
int main()
{
int m,r;
printf("Please input m:");
scanf("%d",&m);
printf("Please input n:");
scanf("%d",&r);
counts=0;
a[0]=r;
comb(m,r);
printf("All kinds is:%d\n",counts);
return 0;
}