斯特灵数:把
n
个数划分为恰好
有递推关系式:
S(n+1,k)=S(n,k−1)+kS(n,k−1)
贝儿数:把 n 个数划分为非空集合的所有划分数。有:
贝尔数的递推公式:
Bn=∑k=0n(nk)Bk
书上的划分数:书上求的是:把 n 个相同的数划分为不超过
dp[i][j]=dp[i][j−i]+dp[i−1][j]
严重显然正确,但是至今未明白原因。
附上书上代码:
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int M = 1009, INF = 0x3fffffff;
int n, m, dp[M][M];
int main(void) {
while(cin >> n >> m) {
dp[0][0] = 1;
for(int i = 1; i <= m; i++) {
for(int j = 0; j <= n; j++) {
dp[i][j] = (j >= i ? dp[i][j - i] : 0) + dp[i - 1][j];
}
}
}
return 0;
}