官方题解
2024-03-21 16:35:48
发布于:浙江
81阅读
0回复
0点赞
【算法分析】
设置二维数组 , 表示将 个数划分为 个子集的划分数。
当 或者 时,划分的方案数为 。
其他情况:
可以由两个部分得来:
(1) 相比于 , 多出的 可以单独作为一个子集,有 种方法
(2) 相比于 , 多出的 可以放入划分的 个子集中的一个,有 种方法
所以 %
【参考代码】
#include <iostream>
using namespace std;
int f[110][110];
int main() {
int n, r;
cin >> n >> r;
for (int i = 1; i <= n; i++) {
f[i][i] = f[i][1] = 1;
}
for (int i = 2; i <= n; i++) {
for (int j = 1; j <= r; j++) {
f[i][j] = (f[i - 1][j] * j + f[i - 1][j - 1]) % 10007;
}
}
cout << f[n][r];
}
【时间复杂度】
【预计得分】
全部评论 1
谢谢
2024-10-12 来自 浙江
0
有帮助,赞一个