题解 UVA1485 【Permutation Counting】
【摘要】 状态定义:f(n,k)为n个元素,E-value为k的排列个数;转移方程:f(n,k)= f(n-1,k)* 1 放在最后 + f(n-1,k)* k 放在最后和ai>i的元素交换 + f(n-1,k-1)*(n-k) 放在最后和ai≤i的元素交换void solve() { rep(i, 1, 1000) { f[i][0] = 1...
状态定义:f(n,k)为n个元素,E-value为k的排列个数;
转移方程:f(n,k)= f(n-1,k)* 1 放在最后
+ f(n-1,k)* k 放在最后和ai>i的元素交换
+ f(n-1,k-1)*(n-k) 放在最后和ai≤i的元素交换
void solve() {
rep(i, 1, 1000) {
f[i][0] = 1;
rep(j, 1, 1000)
f[i][j] = (f[i - 1][j] * (j + 1) + f[i - 1][j - 1] * (i - j)) % Mod;
}
while (~scanf("%d%d", &N, &k)) {
printf("%lld\n", f[N][k]);
}
}
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)