從n個不同元素中,任取m(m≤n)個元素並成一組,叫做從n個不同元素中取出m個元素的乙個組合;從n個不同元素中取出m(m≤n)個元素的所有組合的個數,叫做從n個不同元素中取出m個元素的組合數。定義:
從m個不同元素中取出n(n≤m)個元素的所有組合的個數,叫做從m個不同元素中取出n個元素的組合數(combination)。
公式:c(m,n)=p(m,n)/n!=m!/((m-n)!n!)
性質:1.互補性質
即從m個不同元素中取出n個元素的組合數=從m個不同元素中取出(m-n)個元素的組合數
這個性質很容易理解,例如c(9,2)=c(9,7),即從9個元素裡選擇2個元素的方法與從9個元素裡選擇7個元素的方法是相等的。
規定:c(m,0)=1
有四個數1、2、3、4(此時有4個元素即m=4)
其中取3個數做成組合,(取n個數即n=3)
有多少個組合即叫做從m個不同元素中取出n個元素的組合數(combination)。(即c(m,n))
問有多少種組合
1.公式的推導 公式↓↓↓
想象這是用1234 組合三位數abc(a b c為此三位數的百、十、個位)1.要注意的是此三位數中數字不能重複即出現122這樣的三位數c(m,n)=p(m,n)/n!=m!/((m-n)!*n!)
錯誤示範:
#include
using
namespace std;
intmain()
輸出:
111
112113
114121
122123
124131
132133
134141
142143
144211
212213
214221
222223
224231
232233
234241
242243
244311
312313
314321
322323
324331
332333
334341
342343
344411
412413
414421
422423
424431
432433
434441
442443
44464
這樣有4×4×4=64種
2.且也不能出現既有123又有132的組合情況出現
錯誤示範:
#include
using
namespace std;
intmain()
}}}}
}}}}
return0;
}
以上純屬扯淡
3.所以正確想法:
首先設想a,a有四個數可供選擇即1、2、3、4
然後是b,a選完後b有3個數可選擇
當a選1時,b可為2 3 4然後是c,a、按照上面類推可知b選完後還有2個數可供選擇當a選2時,b可為1 3 4
當a選3時,b可為1 2 4
當a選4時,b可為1 2 3
這樣一算abc的組合有4×3×2=24種(注意此時的組合有重複的如123、132之類)
假如有n個數要選,這裡的n是3,所以是4×3×2=24
即m×(m-1)×(m-2)× ·······(一共n項相乘)
所以原式
=m×(m-1)× ······ ×(m-n+1)
=m×(m-1)× (m-2)×······ ×1 ÷(1×2×······×(m-n+1-1))
=m!/(m-n)!
根據公式,我們知道推導出的這個公式並不完善,那是因為像123、132這樣的重複問題沒有解決。
這時我們把目光放小,abc這個三位數本身的組合只有
abcacb
bacbca
cabcba
由排列得知,第一位有3個選擇,第二空2個選擇,第三空只有乙個選擇
所以一共有3×2×1=6種
並且這6種都是用abc這3個字母交換順序而得的,也就是說,不管a、b、c取什麼數,總會有這6種組合,而這六種組合恰好我們只需一種,因為其他的按照組合數的定義來說都是重複的。
而我們那之前用m!/(m-n)!式子算出的24種,就包括這3個固定的數6種情況的。
也就是說每當它給a、b、c 3個位置找到3個固定的值時,m!/(m-n)!式子都會把一種算成六種。可以說是每6個答案中只有乙個算一種。
所以我們把原來算出的24再÷6=4為正確答案,用組合數公式驗算發現是對的。
並且這個重複的次數跟要取的n的個數有關,如取3個元素那麼3×2×1個數即3!個數里會有乙個不重複的.
所以,m!/(m-n)!還需除以n!用以去除重複的,即m!/[(m-n)!*n!]
推導出組合數公式:
**於
附:求組合數**:(翻了好久以前的**)
#include
using
namespace std;
typedef
long
long ll;
ll f[
5001][
5001];
ll c
(int n,
int m)
intmain()
有錯誤請提出,以免誤 組合數公式
若表示在 n 個物品中選取 m 個物品,則如存在下述公式 所以可以用遞推算組合數 題目描述 開學了,學校又迎來了好多新生。acmer想為新生準備乙個節目。來報名要表演節目的人很多,多達n個,但是只需要從這n個人中選m個就夠了,一共有多少種選擇方法?輸入 測試例項包括多組測試資料,每組資料佔一行。每組...
組合數問題(組合數公式轉換 字首和)
組合數的定義 給你n個數,從中取出m個數,共有 cn m中取法,cn m n m n m 重要公式 cnm cn 1 m cn 1 m 1 題目大意 資料有t組,給你n,m,k,問你對於所有的i 0,n j 0,min i,m 有多少對ci j可以整除k。t 1e4,n,m 2000 思路 暴力跑的...
排列組合公式推導
全排列 共n個球,取n個球,有多少種排列?要從n個球中取n個球,可以想象有n個位置,乙個位置放乙個球。第乙個位置,有n種選擇,然後第2個位置,剩n 1種選擇,第3個位置,剩n 2種選擇,依次類推,第n個位置,只剩1種選擇。所以,n個位置共有 n n 1 n 2 1 n 種排列。ps 這裡其實用到了分...