【模板】第二類斯特林數Stirling
阿新 • • 發佈:2017-10-16
pre ble 出發 ati val span 兩種 定義 技術
。
(2)如果n個元素已經構成了m個集合,將第n+1個元素插入到任意一個集合。方案數 m*S(n,m) 。
綜合兩種情況得:
遞推式:dp[i][j] = dp[i-1][j-1]+j*dp[i-1][j];
模板代碼:
第二類Stirling數實際上是集合的一個拆分,表示將n個不同的元素拆分成m個集合的方案數,記為 或者
。
第二類Stirling數的推導和第一類Stirling數類似,可以從定義出發考慮第n+1個元素的情況,假設要把n+1個元素分成m個集合則分析如下: (1)如果n個元素構成了m-1個集合,那麽第n+1個元素單獨構成一個集合。方案數
![技術分享](https://gss2.bdstatic.com/-fo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D73/sign=80d804f28194a4c20e23e5280ff4794d/a8ec8a13632762d0a1534142a6ec08fa503dc6da.jpg)
![技術分享](https://gss2.bdstatic.com/-fo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D261/sign=9ff76854af014c081d3b2fa33b79025b/0d338744ebf81a4c27dc0934d12a6059242da665.jpg)
dp[0][0] = 1; for(int i = 1;i <= n; i++){ for(int j = 1;j <= i; j++){ dp[i][j] = dp[i-1][j-1]+j*dp[i-1][j]; } }
n=0 | 1 |
n=1 | 0 1 |
n=2 | 0 1 1 |
n=3 | 0 1 3 1 |
n=4 | 0 1 7 6 1 |
n=5 | 0 1 15 25 10 1 |
n=6 | 0 1 31 90 65 15 1 |
n=7 | 0 1 63 301 350 140 21 1 |
n=8 | 0 1 127 966 1701 1050 266 28 1 |
n=9 | 0 1 255 3025 7770 6951 2646 462 36 1 |
【模板】第二類斯特林數Stirling