打印本文 打印本文  关闭窗口 关闭窗口  
C趣味程序(二)(10)组合数
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 13:59:00  文章录入:杜斌  责任编辑:杜斌

2.4 组合数
    计算从m个元素中取n个元素的组合数C(m,n),其中m,n满足0<=n<=m。
计算公式如下:

按式(2)设计程序更为简结。

根据(1)式的程序设计
#include
void g(double *p,int k);
double p=0,c;
void main()
{
    int m,n,k;
    printf("输入 m,n = ");
    scanf("%d,%d",&m,&n);
    if(m    if(n==0||m==n) c=1;
    else
    {
        k=m;g(&p,k);c=p;
        k=n;g(&p,k);c=c/p;
        k=m-n;g(&p,k);c=c/p;
    }
    printf("c( %d, %d )= %.f\n",m,n,c);
}
void g(double *p,int k)
{
    int i;
 *p=1;
    for(i=1;i<=k;){*p=*p*i;i++;}
}
运行结果如下:
输入 m,n= 20,5
C(20,5) = 15504

--------------------------

打印本文 打印本文  关闭窗口 关闭窗口