c语言问题,组合数怎么算啊?

Python013

c语言问题,组合数怎么算啊?,第1张

C(n,m) ----------n是下标 , m是上标 (C上面m,下面n),C(n,m) 表示 n选m的组合数,等于从n开始连续递减的m个自然数的积除以从1开始连续递增的m个自然数的积。

例子:

C(8,3)=8*7*6/(1*2*3) =56

分子是从8开始连续递减的3个自然数的积

分母是从1开始连续递增的3个自然数的积

扩展资料

1、组合定义

组合(combination),数学的重要概念之一。从n个不同元素中每次取出m个不同元素(0≤m≤n),不管其顺序合成一组,称为从n个元素中不重复地选取m个元素的一个组合。

2、组合总数

组合总数(total number of combinations)是一个正整数,指从n个不同元素里每次取出0个,1个,2个,…,n个不同元素的所有组合数的总和。

3、重复组合

重复组合(combination with repetiton)是一种特殊的组合。从n个不同元素中可重复地选取m个元素。不管其顺序合成一组,称为从n个元素中取m个元素的可重复组合。当且仅当所取的元素相同,且同一元素所取的次数相同,则两个重复组合相同。

参考资料:百度百科-组合

计数原理C和A的计算方法公式和定义如下:

计算公式:

 

此外规定0!=1(n!表示n(n-1)(n-2)...1,也就是6!=6x5x4x3x2x1

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

计算公式:

 ;C(n,m)=C(n,n-m)。(n≥m)

其他排列与组合公式 从n个元素中取出m个元素的循环排列数=A(n,m)/m=n!/m(n-m)!. n个元素被分成k类,每类的个数分别是n1,n2,...nk这n个元素的全排列数为 n!/(n1!×n2!×...×nk!). k类元素,每类的个数无限,从中取出m个元素的组合数为C(m+k-1,m)。

公式:A(n,m)=n×(n-1)...(n-m+1)=n!/(n-m)!(n为下标,m为上标,以下同)

例如:A(4,2)=4!/2!=4*3=12

公式:C(n,m)=P(n,m)/P(m,m) =n!/m!(n-m)!

例如:C(4,2)=4!/(2!*2!)=4*3/(2*1)=6