用c语言怎么实现排列组合啊?比如从100个数里面任意选出5个数,即C100 5……
2个回答
展开全部
#include<stdio.h>
void main()
{
int n = 100;
int m = 5;
int n1 = 1, m1 = 1;
for(int i = 1; i <= m; i++)
{
n1 *= n - i + 1;
m1 *= i;
}
n1 = n1/m1;
printf("C100 5 = %d\n",n1);
}
从n中选出m个,只要改变n和m的值即可,VS2010下测试通过。
void main()
{
int n = 100;
int m = 5;
int n1 = 1, m1 = 1;
for(int i = 1; i <= m; i++)
{
n1 *= n - i + 1;
m1 *= i;
}
n1 = n1/m1;
printf("C100 5 = %d\n",n1);
}
从n中选出m个,只要改变n和m的值即可,VS2010下测试通过。
追问
我不是想要得到一共有多少种情况,我是想知道所有的组合。
追答
不好意思哈,没有及时看到你的追问。如果要得到所有组合的话,程序如下:
#include
void main()
{
int a[100];
for(int b = 0; b < 100; b++)
a[b] = b + 1;
int i,j,k,x,y;
printf("所有的组合有:\n");
for(i=0;i<96;i++)
{
for(j=i+1;j<97;j++)
{
for(k=j+1;k<98;k++)
{
for(x=k+1;x<99;x++)
{
for(y=x+1;y<100;y++)
printf("%d %d %d %d %d\n",a[i],a[j],a[k],a[x],a[y]);
}
}
}
}
}
要执行很久很久。。。因为C100 5是个很大的数
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询