排列及計算公式
從n個不同元素中,任取m(m≤n)個元素按照一定的順序排成一列,叫做從n個不同元素中取出m個元素的乙個排列;從n個不同元素中取出m(m≤n)個元素的所有排列的個數,叫做從n個不同元素中取出m個元素的排列數,用符號
a(n,m)表示或
【p(n,m)】表示。
a(n,m)=n(n-1)(n-2)……(n-m+1)= n!/(n-m)!(當n=m時,上述式子分母為0!=1).
組合及計算公式
從n個不同元素中,任取m(m≤n)個元素並成一組,叫做從n個不同元素中取出m個元素的乙個組合;從n個不同元素中取出m(m≤n)個元素的所有組合的個數,叫做從n個不同元素中取出m個元素的組合數.用符號
c(n,m) 表示。(c即combination).
例1:傳送門
例2:將n個相同的球放到m個不同的袋子裡有幾種方案?
分析:假設m=3,n=2,我們可以這麼放(*代表求,空白區域代表袋子): *| |*,還可以這麼放: |**| ,還可以這麼放:| |**......這樣的話就有m-1個隔板(|)和n個球需要放置在n+m-1個位置中,考慮放置隔板的方案數為c(n+m-1,m-1),考慮求的方案數為c(n+m-1,n),那麼答案為c(n+m-1,m-1) = c(n+m-1,n).
例3:將n個不同的球放到m個不同的袋子裡有幾種方案?
分析:第乙個袋子可以放n種球,第二個袋子可以放n-1種球......第m個袋子可以放n-m種球,答案為n*(n-1)*...*(n-m).這樣分析有點麻煩,因為每一種球都是不一樣的,每一種球都只能放進1個袋子裡,而每一種袋子則不一樣,可以裝下n種球。所以我們對球進行分析:第乙個球可以放m個袋子裡,第二個球可以放m個袋子裡,...,第n個球可以放m個袋子裡,答案為m^n.
例4:將n個不同的球放到m個相同的袋子裡有幾種方案?
分析:袋子相同就沒辦法用數學公式推導了,考慮dp.令f[i][j]表示前i個球放在j個袋子裡的方案數。考慮第i個球怎麼放,如果第i個球占用了乙個新的袋子,那麼f[i][j] += f[i-1][j-1]就好了。如果沒有呢?那麼這個球就能放到j個袋子裡,即f[i][j] += f[i-1][j] * j,合併一下f[i][j] = f[i-1][j-1] + f[i-1][j] * j.答案是f[n][1] + f[n][2] + ...+ f[n][m]
例5:將n個相同的球放到m個相同的袋子裡有幾種方案?
分析:球相同,袋子也相同,這要怎麼計數啊qaq,要既不多也不少的計數,肯定是有某一種順序,我們按照每個袋子裝球的數量降序排列,這就相當於把相同的袋子強行當成了不同的袋子,為了維護這個降序,我們一旦在第i個袋子放乙個球,那麼前面的袋子都必須要放乙個球,當然,我們也可以考慮不在這個位置多放乙個球,我們在後面的袋子放,所以f[i][j] = f[i-j][j] + f[i][j-1].這道題和上一道題有乙個很大的區別,上一道題的狀態轉移方程沒有考慮不放的情況,是因為袋子是相同的,放在這個袋子和那個袋子是沒有區別的,我們硬性規定第i個球必須放在我們選定的j個袋子中,而這一題雖然題面上說袋子相同,但是我們硬性規定是不同的,所以可以考慮不放的情況。
總結:這四道題可以得出乙個規律:袋子不同用數學,袋子相同用dp,不同和相同的區別在於,不同的話我們可以單獨考慮第i個,相同的話必須要變成「不同」的才能單獨考慮!
排列組合問題的一些整理
加法原理是分類計數原理,常用於排列組合中,具體是指 做一件事情,完成它有n類方式,第一類方式有m1種方法,第二類方式有m2種方法,第n類方式有mn種方法,那麼完成這件事情共有m1 m2 mn種方法。做一件事,完成它需要分成n個步驟,做第一 步有m1種不同的方法,做第二步有m2種不同的方法,做第n步有...
圍成一圈的排列組合問題 排列組合問題
曾經的好朋友關係不錯,有一天那個女孩對那個男孩說了喜歡 那個男孩就不在聯絡這個女孩了 這個女孩就是很喜歡他 那個男孩去當兵了 那個女孩要等他 不強求做男女朋友 兩年後女孩去找他 他會理這個女孩嗎?他不會理這個女孩的 追問 為什麼 回答 那個男孩就不在聯絡這個女孩了,證明男孩不喜歡女孩 追問 但關係很...
排列組合問題
若有一串字母abc,進行全排列,有六種方法,3的階層,321,為什麼是這樣呢,我們根據 看思路 這之間會涉及遞迴,回溯 將abc看成陣列,a 0 a,a 1 b,a 2 c 下文中用a0代替a,a1代替b,a2代替c 排列的過程就是交換位置的過程 1 先對a進行交換 即k 0時 a0和a0自己交換 ...