根本思想還是組合數學的加法原則,將乙個狀態分成幾個不相交的狀態,然後用加法原則加起來即可如果:n>=m c(n
−1,m
−1
)c(n-1,m-1)
c(n−1,
m−1)
否則 n000
分析:
使用插板法:n個球中間有n-1個間隙,現在要分成m個盒子,而且不能有空箱子,所以只要在n-1個間隙選出m-1個間隙即可。
c (n
+m−1
,m−1
)c(n+m-1,m-1)
c(n+m−
1,m−
1)我們在第1類情況下繼續討論,我們可以先假設m個盒子裡都放好了1個球,所以說白了就是,現在有m+n個相同的球,要放入m個不同的箱子,沒有空箱。也就是第1種情況
第二類斯特林數dp[n][m]
dp[n][m]表示n個球 m個盒子的方法數dp[分兩種狀態
1.第n個球單獨在乙個盒子裡 有dp[n-1][m-1]
2.第n個球不單獨在乙個盒子裡 有m*dp[n-1][m]
n][m
]=m∗
dp[n
−1][
m]+d
p[n−
1][m
−1
]dp[n][m]=m * dp[n-1][m]+dp[n-1][m-1]
dp[n][
m]=m
∗dp[
n−1]
[m]+
dp[n
−1][
m−1]
邊界條件:
dp[k][k]=1, k>=0
dp[k][0]=0,k>=1
0,n列舉使用箱子的個數即可 此時的dp[n][m]是情況三的第二類的斯特林數an
s=∑i
=0md
p[n]
[i
]ans=\sum_^m dp[n][i]
ans=∑i
=0m
dp[n
][i]
a ns
=dp[
n][m
]∗m!
ans=dp[n][m]*m!
ans=dp
[n][
m]∗m
! 因為球是不同的,所以dp[n][m]得到的盒子相同的情況,只要再給盒子定義順序,就等於現在的答案了
power(m,n) 表示m的n次方
每個球都有m種選擇,所以就等於m^n
n個球m個盒子,分兩種情況dp[n][m]代表n個球m個盒子允許空箱的個數
兩種狀態
1.每個盒子至少有乙個球 有dp[n-m][m]種情況
2.至少有乙個盒子沒有球 有dp[n][m-1]種情況
n-m>=0:dp[
n][m
]=dp
[n][
m−1]
+dp[
n−m]
[m
]dp[n][m]=dp[n][m-1]+dp[n-m][m]
dp[n][
m]=d
p[n]
[m−1
]+dp
[n−m
][m]ndp
[n][
m]=d
p[n]
[m−1
]dp[n][m]=dp[n][m-1]
dp[n][
m]=d
p[n]
[m−1
]dp[n-m][m],dp同第7種情況,n>=m 0, n因為要求無空箱,我們先在每個箱子裡面放1個球,然後還剩下n-m個球了,再根據情況7答案就出來了
排列組合總結
在此介紹二進位制轉化法,即,將每乙個組合與乙個二進位制數相應起來,列舉二進位制的同一時候,列舉每乙個組合。如字串 abcde,則有 00000 null 00001 a 00010 b 00011 ab 00100 c 11111 abcde 給出程式例如以下所看到的 include include...
排列組合總結
在此介紹二進位制轉化法,即。將每乙個組合與乙個二進位制數相應起來,列舉二進位制的同一時候,列舉每乙個組合。如字串 abcde,則有 00000 null 00001 a 00010 b 00011 ab 00100 c 11111 abcde 給出程式例如以下所看到的 include include...
排列組合問題
若有一串字母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自己交換 ...