当前位置:首页 » 编程语言 » c语言求组合数思路
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言求组合数思路

发布时间: 2022-06-07 00:05:23

c语言编程实现求组合数P=C(n,k)的值

#include <stdio.h>
void main(){
int n,k,sum=1;
printf("请输入组合数P=C(n,k)中的n、k:");
scanf("%d %d",&n,&k);
for (int i=k+1;i<=n;i++)
sum*=i;
for (i=1;i<=n-k;i++)
{
sum/=i;
}
printf("C(%d,%d)=%d\n",n,k,sum);
}

② C语言【求组合数】

C语言的话,你要自己设计一个数据结构,用来保存超长整数。
然后自己编写超长整数的四则运算函数。
跟据你要处理的组合数来设计这个结构大小,
比如要处理100的阶乘,要10进制的157位数。

③ 请教C语言排列组合数算法的思想

#include<stdio.h>
long sumSelect(int full,int few,int order){ //参数:full总数 few:需要选出数 order:=1是排列 =0是组合
long sum=1;
if(full<few) return -1;
for(int i=full;i>few;i--)
sum=sum*i;
if(order) for(int j=1;j<=few;j++) sum=sum*j;
return sum;
}

main()
{
printf("%d\n",sumSelect(3,3,0)); //3个数中选3个然后组合 1
printf("%d\n",sumSelect(3,3,1));//3个数中选3个然后排列 6
printf("%d\n",sumSelect(4,3,1));//4个数中选3个然后排列 24

}

④ C语言题目求解——组合数

#include <stdio.h>

int jiecheng(int n)

{

if(n == 1 || n==0)

return 1;

else

return n*jiecheng(n-1);

}

int main()

{

int n;

int i;

int t;

int count = 0;

while(1)

{

scanf("%d",&n);

if(n == -1)

break;

printf("2^%d=",n);

for(i = 0; i <= n; i++)

{

count ++;

t = jiecheng(n)/(jiecheng(n-i)*jiecheng(i));

if(count == 0)

printf("%d",t);

else

printf("+%d",t);


}

printf(" ");


}

return 0;

}

⑤ C语言求组合数

doublefact(longnum)
{
for(longi=1;num>0;num--)
{
i*=num;
}
}

intmain()
{
longm;
longn;
longC;

scanf("%ld%ld",&m,&n);

C=fact(n)/((fact(m))*fact(n-m));

printf("%ld",C);

return0;
}

⑥ c语言中组合数大数的计算

存储空间是有限的
在4字节的空间里能存储的最大正整数是2的31次幂减1,最小的负整数是负的2的31次幂

⑦ 用C语言求组合数

实现的算法很多, 下面给出一个不需要递归的算法; 需要设计两个函数。
unsigned long factorial (unsigned long n);
long long perm(unsigned long m, unsigned long n);

unsigned long factorial (unsigned long n)
{
unsigned long value = (n == 0) ? 1 : n;
while( n >= 2 )
value *= --n;

return value;
}

long long perm(unsigned long m, unsigned long n)
{
if (m > n)
return -1;
else
return (unsigned long) (factorial(n)/factorial(n-m));
}

只为了m>n就要返回-1, 有点浪费啊~~~
注意求值范围, 如果需要可以int64扩展。。。

⑧ C语言 求组合数,,用递归方法

举个例子 不太明白是什么组合数
补充======
说白了就是求阶乘
fun是阶乘函数
直接调用即可

#include <stdio.h>

long sum=0;//组合数结果
long fun(int i) //阶乘
{
If(n==1)
return 1 ; /*递归出口*/
else
return i*fun(i-1); /*递归体*/
}

long com(int n, int m)
{
sum=fun(m)/fun(n)*fun(m-n);
return sum;
}
int main(void)
{
int m=9,n=4;
printf("%l" , com(4,9));
return 0;
}

⑨ 排列组合C语言编程思路

有286*20*10*84种,你确定要输出来吗?!