51nod 1371 填数字(三维 dp)
发布日期:2021-11-02 09:48:53
浏览次数:1
分类:技术文章
本文共 1462 字,大约阅读时间需要 4 分钟。
1371 填数字
有n行格子,第i(1<=i<=n)行有i个格子,每行格子是左对齐。现在要在每一个格子填入一个非负整数,最后使得每一行每一列的和都不超过2。
请计算有多少种方案,答案比较大,请输出对100,000,007(1e8+7)取余后的结果。
下图是n=4的时候格子的摆放。
输入
第1行:给出一个整数n (1<=n<=200)。
输出
对于每个测试用例,输出结果占一行。
输入样例
1
输出样例
3
代码
#include#include #include #include #include #include #include #include using namespace std;typedef long long ll;const ll mod = 1e8 + 7;ll dp[210][210][210];int main() { ll n; cin >> n; dp[0][0][0] = 1; // 第i行 for (ll i = 1; i <= n; i++) { // 有j列和为1 for (ll j = 0; j <= i; j++) { // 有k列和为2 for (ll k = 0; k <= (i - j); k++) { dp[i][j][k] = dp[i - 1][j][k]; if (j - 1 >= 0) { // 第i行放一个1在列和为0的位置 dp[i][j][k] = (dp[i][j][k] + dp[i - 1][j - 1][k] * (i - j - k + 1)) % mod; } if (j - 2 >= 0) { // 第i行放两个1在列和为0的位置 dp[i][j][k] = (dp[i][j][k] + dp[i - 1][j - 2][k] * (i - j - k + 2) * (i - j - k + 1) / 2) % mod; } if (k - 2 >= 0) { // 第i行放两个1在列和为1的位置 dp[i][j][k] = (dp[i][j][k] + dp[i - 1][j + 2][k - 2] * (j + 2) * (j + 1) / 2) % mod; } if (k - 1 >= 0) { // 第i行放一个1在列和为1的位置 dp[i][j][k] = (dp[i][j][k] + dp[i - 1][j + 1][k - 1] * (j + 1)) % mod; // 第i行放一个1在列和为1的位置,放一个1在列和为0的位置 dp[i][j][k] = (dp[i][j][k] + dp[i - 1][j][k - 1] * j * (i - j - k + 1)) % mod; // 第i行放一个2在列和为0的位置 dp[i][j][k] = (dp[i][j][k] + dp[i - 1][j][k - 1] * (i - j - k + 1)) % mod; } } } } ll ans = 0; for (ll i = 0; i <= n; i++) { for (ll j = 0; j <= n; j++) { ans = (ans + dp[n][i][j]) % mod; } } cout << ans << endl; return 0;}
转载地址:https://blog.csdn.net/weixin_43820352/article/details/110493818 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月10日 09时28分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Android最强保活黑科技的最强技术实现,深度解析,值得收藏
2019-04-29
Android架构师必备框架技能核心笔记,面试心得体会
2019-04-29
Android架构师必备框架技能核心笔记,高级面试题+解析
2019-04-29
android热修复框架对比,12年高级工程师的“飞升之路”,含泪整理面经
2019-04-29
Android多线程实现方式及并发与同步,技术详细介绍
2019-04-29
Android开发究竟该如何学习,成功入职字节跳动
2019-04-29
三年老Android经验面经,看看这篇文章吧!
2019-04-29
为什么Android要采用Binder作为IPC机制?成功入职腾讯
2019-04-29
海量算法高频面试题精编解析,附超全教程文档
2019-04-29
深入浅出Android性能调优,系列篇
2019-04-29
深入浅出Android性能调优,附大厂真题面经
2019-04-29
深入解析Android-AutoLayout,全网疯传
2019-04-29
深入解析android核心组件和应用框架,最全Android知识总结
2019-04-29
深入解析android核心组件和应用框架,社招面试心得
2019-04-29
深度解析跳槽从开始到结束完整流程,持续更新中
2019-04-29
深度解析跳槽从开始到结束完整流程,面试真题解析
2019-04-29
hashmap扩容过程,字节大神强推千页PDF学习笔记,经典好文
2019-04-29
kotlin面试题!Android大厂高频面试题解析,薪资翻倍
2019-04-29
kotlin面试题!一口气拿了9家公司的offer,已拿offer入职
2019-04-29
retrofit优点,互联网寒冬公司倒闭后,年薪50W
2019-04-29