C语言求组合数

Python017

C语言求组合数,第1张

double fact(long num)

{

    for (long i = 1 num > 0 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(5,3)=C(5,2)=5*4/2*1=20/2=10。一般上面的数字超过了下面的一半,先化简。比如:

C(10,7)=C(10,3)=10*9*8/3*2*1=720/6=120。

组合的定义:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号 C(n,m) 表示。

计算公式:

扩展资料:

排列、组合、二项式定理公式口诀:

加法乘法两原理,贯穿始终的法则。与序无关是组合,要求有序是排列。

两个公式两性质,两种思想和方法。归纳出排列组合,应用问题须转化。

排列组合在一起,先选后排是常理。特殊元素和位置,首先注意多考虑。

不重不漏多思考,捆绑插空是技巧。排列组合恒等式,定义证明建模试。

关于二项式定理,中国杨辉三角形。两条性质两公式,函数赋值变换式。

#include <stdio.h>

void main()

{

void choose(int a,int b)

int a,b,c,d

printf("请输入两个整数,以0,0结束\n")

scanf("%d,%d",&a,&b)

scanf("%d,%d",&c,&d)

if(c==0&&d==0)

choose(a,b)

}

void choose(int a,int b)

{

if(b>a)

{

printf("error!")

}

else

{

int fenmu=b,fenzi=a

for(int i=a-1i>a-bi--)

fenzi*=i

for(int j=b-1j>1j--)

fenmu*=j

int temp

temp=fenzi/fenmu

printf("%d",temp)

}

}