這篇部落格總結一下下邊8種問題:
1. 有n個相同的球,k個不同的盒子,把n個球放到盒子裡,盒子不允許為空,有多少種方案。
2. 有n個相同的球,k個不同的盒子,把n個球放到盒子裡,盒子允許為空,有多少種方案。
3. 有n個相同的球,k個相同的盒子,把n個球放到盒子裡,盒子允許為空,有多少種方案。
4. 有n個相同的球,k個相同的盒子,把n個球放到盒子裡,盒子不允許為空,有多少種方案。
5. 有n個不同的球,k個相同的盒子,把n個球放到盒子裡,盒子不允許為空,有多少種方案。
6. 有n個不同的球,k個相同的盒子,把n個球放到盒子裡,盒子允許為空,有多少種方案。
7. 有n個不同的球,k個不同的盒子,把n個球放到盒子裡,盒子不允許為空,有多少種方案。
8. 有n個不同的球,k個不同的盒子,把n個球放到盒子裡,盒子允許為空,有多少種方案。
1. 有n個相同的球,k個不同的盒子,把n個球放到盒子裡,盒子不允許為空,有多少種方案。
這個問題等價於求n=a1+a2+a3+...ak ,ai不能為0的方案數。隔板法,插空法。
把n個相同的球放在一行,那麼這n個球中間有n-1個空,那麼在這n-1個空中選k-1個空,放k-1個隔板,就把這n個球分成了k份。
所以方案數為c(n-1,k-1) , 組合數公式,表示從n-1個取k-1個的方案數。
例題: 牛客網
2. 有n個相同的球,k個不同的盒子,把n個球放到盒子裡,盒子允許為空,有多少種方案。
和問題1方法一樣,這個允許盒子為空。n=a1+a2+a3+...ak ,ai可以為0的方案數。
這個題等價於 有n+k個相同的球,k個不同盒子,盒子不許為空的方案數。因為:把這n+k個球分到k個盒子之後,把每個盒子裡的球的數量都減一,那麼球的總數就是n個了,盒子裡的球就可能是空的了。
所以方案數為 c(n+k-1,k-1).
例題: 牛客網
3. 有n個相同的球,k個相同的盒子,把n個球放到盒子裡,盒子允許為空,有多少種方案。
這是一道動態規劃題,用dp[i][j]表示把n個球放到不超過k個盒子裡的方案數。
我們可以根據有沒有空盒子列出下面這個轉移方程:
dp[i][j]=dp[i][j-1]+dp[i-j][j] ,解釋一下:
dp[i][j-1] 表示有空盒子,那麼就是i個球放到不超過j-1個盒子的方案數
dp[i-j][j] 表示沒有空盒子,那麼每個盒子最少要有1個球,那麼先把每個盒子放乙個球,還剩下i-j個球,把剩下的i-j個球分到不超過j個盒子。
dp[n][k]就是答案。
4. 有n個相同的球,k個相同的盒子,把n個球放到盒子裡,盒子不允許為空,有多少種方案。
和第3個方法一樣,也是動態規劃,dp[i][j]表示的意義和第3題一樣。
答案應該是 dp[n][k]-dp[n][k-1].
顯然,(n個球放到k個相同的盒子,盒子允許為空的方案數)減去(n個球放到k-1個盒子,盒子允許為空的方案數)就是 (n個球放到k個盒子,盒子不允許為空的方案數)。
5. 有n個不同的球,k個相同的盒子,把n個球放到盒子裡,盒子不允許為空,有多少種方案。
用s(n,k)表示n個不同的球,放到k個不同的盒子,盒子不允許為空的方案數。
那麼 s(n,k)=s(n-1,k-1)+k*s(n-1,k) 1<=k<=n s(0,0)=1,s(i,0)=0
解釋一下怎麼理解這個狀態轉移方程,第n個球可以有兩種狀態,第n個球單獨在乙個盒子裡,第n個球所在盒子至少有兩個。
s(n-1,k-1) 就是第n個球單獨在乙個盒子裡,那麼就剩n-1個不同球,分到剩下的k-1個盒子裡。
k*s(n-1,k) :先把前i-1個分配到k個盒子裡,方案數是s(n-1,k) ,第n個球然後就有k種方法,總方案數就是k*s(n-1,k)
dp打出乙個二維陣列的表,就能算出答案
6. 有n個不同的球,k個相同的盒子,把n個球放到盒子裡,盒子允許為空,有多少種方案。
和第5題方法一樣,答案就是 s(n,1)+s(n,2)+.....s(n,k)
顯然是這樣的,不解釋。
7. 有n個不同的球,k個不同的盒子,把n個球放到盒子裡,盒子不允許為空,有多少種方案。
和第5題的區別是盒子不同,那麼答案就是 s(n,k)*k!
8. 有n個不同的球,k個不同的盒子,把n個球放到盒子裡,盒子允許為空,有多少種方案。
k的n次方,每個球都有k中選擇。
組合數學放球模型
n個球無區別,m個盒有區別,可有空盒 c n m 1,m 1 n個球無區別,m個盒無區別,可有空盒 c n m 1,m 1 m 在n m 1個球中選m 1個變成板 n個球無區別,m個盒有區別,沒有空盒 c n 1,m 1 n個球無區別,m個盒無區別,沒有空盒 c n 1,m 1 m 在n 1個空隔中...
經典組合數學模型 盒子與球問題
組合數學 盒子與球問題 給定 n 個不同的球,放進 m 個不同的盒子,盒子允許為空,有多少種方案?a 給定 n 個不同的球,放進 m 個不同的盒子,盒子不允許為空,有多少種方案?b 給定 n 個不同的球,放進 m 個相同的盒子,盒子允許為空,有多少種方案?c 給定 n 個不同的球,放進 m 個相同的...
組合數學之放球問題 附斯特林數
放球問題在組合數學中是乙個經典問題,在acm比賽中也經常會出現類似的題目,這裡做乙個歸納。我們假定現在有n個球,要放到m個盒子中,根據情況的不同主要可以分為一下8類 這裡確保n m 編號n個球是否有區別 m個盒子是否有區別 是否允許空盒1否 否是2否 否否3否 是否4否 是是5是 否否6是 否是7是...