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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:获取 window 或 linux 当前操作系统公网内网 ip 地址(Java 工具类)
下一篇:最小的回文数(java 实现)

发表评论

最新留言

感谢大佬
[***.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