1. 程式人生 > >組合數公式整理

組合數公式整理

首先明確一下定義:$C(n,m)$表示的意義是從$m$個數裡面取出$n$個數的方案數

一.通項公式

$$C(n,m)=\frac{m!}{n!-(m-n)!}$$

二.遞推公式

$$C(n,m)=C(m-1,n-1)+C(m,n-1)$$

三.組合數相關問題

1.楊輝三角與二項式定理

好像關於組合數的都有涉及到這個

$$(a+b)^{n}=\sum_{k=0}^{n} C(k,n)*a^{n-k}*b^{k}$$

二項式定理大概就是這個樣子

因為一般的楊輝三角是用上面提到的組合數遞推公式來算出每一項的係數的,效率$O(n^2)$,如果要快速求$(a+b)^n$的值可以用二項式定理$O(n)$求出

$$C(k,n)=\frac{n!}{k!(n-k)!}$$

可以得到

$$C(k,n)=\frac{n-k+1}{k}*C(k-1,n)$$

所以也可以用這個公式來$O(n)$計算出楊輝三角某一行的值

2.有相同元素的全排列

設有$n$個元素,其中第$i$個元素有$xi$個,總數為$m$,求全排列

全排列數為:$$\frac{m!}{x1!*x2!*...*xn!}$$

證明:

對於$m$個不同的元素,它的全排列個數為$m!$

同理,對於$xi$個不同的元素,它的全排列個數為$xi!$

於是除掉那些相同的排列即可

3.

$$c(n,m)=c(m-n,m)$$

證明:

胡亂證明一下(數學證明我不想寫好長啊,所以很不嚴謹,大家可以跳過下面那一行)

回顧一下開篇說的定義:$C(n,m)$表示的意義是從$m$個數裡面取出$n$個數的方案數。這其實等價於在$m$種取出$n-m$個物品然後扔掉的方案數。也就是說,$c(n,m)=c(m-n,m)$

4.

$$C(n,m)*C(r,n)=C(r,m)*C(n-r,m-r)$$

證明:

$C(n,m)=\frac{m!}{n!(m-n)!}$

$C(r,n)=\frac{n!}{r!(n-r)!}$

$C(n,m)*C(r,n)$

$=\frac{m!}{n!(m-n)!}*\frac{n!}{r!(n-r)!}$

$=\frac{m!}{r!(m-r)!}*\frac{(m-r)!}{(m-n)!(n-r)!}$

$=C(r,m)*C(n-r,m-r)$