c语言求组合数的函数 c语言计算组合数cmn

计算组合数 c语言如果是指 从m个不同元素中取出n(n≤m)个元素的所有组合的个数 的话
#include"stdio.h"
int fac(int n)/*阶乘函数*/
{
int s,i;
s=1;
for(i=1;i=n;i++)
{
s*=i;
}
return(s);
}
main()
{
int n,m,c;
scanf("%d %d",m,n);
c=fac(m)/(fac(n)*fac(m-n));
printf("%d\n",c);
}
C语言求组合数double fact(long num)
{
for (long i = 1; num0; num--)
{
i *= num;
}
}
int main()
{
long m;
long n;
long C;
scanf("%ld %ld", m, n);
C = fact(n) / ((fact(m)) * fact(n-m));
printf("%ld",C);
return 0;
}
大一C语言(求阶乘用函数实现)求组合数有两个问题,一个是fact()函数里的p应该定义成double类型,第二个是printf()不应该用%d输出double类型的值,应该用%.0f或者%.0lf
顺便说一句,这个问题只要定义fact()一个函数就够了,输出的时候用
printf("result = %.0f\n",fact(n)/(fact(m)*fact(n-m)));
另外两个函数删掉就可以了 。
C语言编程实现求组合数P=C(n,k)的值double
lnchoose(int
n,
int
m)
{
if
(m
n)
{
return
0;
}
if
(m
n/2.0)
{
m
=
n-m;
}
double
s1
=
0;
for
(int
i=m+1;
i=n;
i++)
{
s1
+=
log((double)i);
}
double
s2
=
0;
int
ub
=
n-m;
for
(int
i=2;
i=ub;
i++)
{
s2
+=
log((double)i);
}
return
s1-s2;
}
double
choose(int
n,
int
m)
{
if
(m
n)
{
return
0;
}
return
exp(lnchoose(n,
m));
}
用之前调用math.h头文件,用的话直接把值赋给choose()这个函数即可,直接调用上面的函数 , 返回一个double数值 , 可追问
【c语言求组合数的函数 c语言计算组合数cmn】c语言求组合数的函数的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于c语言计算组合数cmn、c语言求组合数的函数的信息别忘了在本站进行查找喔 。

    推荐阅读