1. 程式人生 > >數學和演算法之---排列組合

數學和演算法之---排列組合

本文大部分內容摘自網路只是本人稍加整理分享,供大家學習交流。

排列的概念

從n個不同的元素中,任取m(m<=n)個元素按照一定的順尋排成一列,叫做從n個不同元素中取出m個元素的一個排列。從n個不同元素中取出m個元素的排列的個數,叫做從n個不同的元素中取出m個元素的排列數,用p(n,m)表示。

排列的公式

p(n,m)=n(n-1)(n-2)……(n-m+1)= n!/(n-m)!(規定0!=1).

組合的概念

從n個不同元素中,任意取出m個元素排成一組,叫做從n個不同元素中取出m個元素的而一個組合;從n個不同元素中取出m個元素的所有組合的個數,叫做從n個不同元素中取出m個元素的組合數,用符號 c(n,m)表示。

組合的公式

c(n,m)=p(n,m)/m!=c(n,n-m))

排列組合的案例

Q1: 有從1到9共計9個號碼球,請問,可以組成多少個三位數?
A1: 123和213是兩個不同的排列數。即對排列順序有要求的,既屬於“排列P”計算範疇。
上問題中,任何一個號碼只能用一次,顯然不會出現988,997之類的組合, 我們可以這麼看,百位數有9種可能,十位數則應該有9-1種可能,個位數則應該只有9-1-1種可能,最終共有9*8*7個三位數。計算公式=P(9,3)=9*8*7,就這麼簡單,其實我們只要牢記公式,就能幫助我們解決生活中的問題。

Q2: 有從1到9共計9個號碼球,請問,如果三個一組,代表“三國聯盟”,可以組合成多少個“三國聯盟”?
A2: 213組合和312組合,代表同一個組合,只要有三個號碼球在一起即可。即不要求順序的,這便是組合。正如A2中說的,213和312 所要表達的結果是一樣的,都是由“1,2 和 3 ”這3 個數組合的。那麼,我們就要考慮,怎麼排除這種情況。

就拿結果是有“1、2、3”這個來做例子分析。

在結果是“1,2,3”這個情況中,考慮按順序拿出來的情況是:第一次可以在3個數(1,2 或3)中選1個,第二次可以在剩下的2個數中選1個。。。也就是說他們的按順序出現的可能有:3*2*1 種。但是隻看結果,不看順序,那麼就重複了3*2*1次。

同理,你可以想到,每一個結果中,他們按順序出現的種數都是6種。也就是說,每一種結果都重複了3*2*1次,

所以要除以3*2*1。

所以A2最終結果為:C(3,9 )= C(9,3)/C(3,9) =  9*8*7/3*2*1=84