当前位置: 首页 > news >正文

动态规划(相同地方不同状态)

竞赛中心 - 蓝桥云课

#include <iostream>
using namespace std;
#define int long long 
const int A=10000001;
const int mod=1000000007;
int dp[A][3];
signed main()
{// 请在此输入您的代码int N;cin>>N;dp[1][0]=1;dp[2][0]=2;dp[2][1]=1;dp[2][2]=1;for(int i=3;i<=N;i++){dp[i][0]=(dp[i-1][0]+dp[i-2][0]+dp[i-1][1]+dp[i-1][2])%mod;dp[i][1]=(dp[i-1][2]+dp[i-2][0])%mod;dp[i][2]=(dp[i-1][1]+dp[i-2][0])%mod;}cout<<dp[N][0]%mod<<endl;return 0;
}

当列数为i时有一下的三种方案:

设dp[i][j]表示在列数为i时,此时图形的状况为j时的方案数,j的大小为0,1,2三种图形情况。

状态转移方程:

      dp[i][0]=(dp[i-1][0]+dp[i-2][0]+dp[i-1][1]+dp[i-1][2])%mod;dp[i][1]=(dp[i-1][2]+dp[i-2][0])%mod;dp[i][2]=(dp[i-1][1]+dp[i-2][0])%mod;

 第一种情况:变成第一种图形情况的可能情况,在i-1列时就为第一种图形情况(在放一个竖放的图形),在i-2列时为第一种图形情况(放两个横放的图形),在i-1列时为第二种图形的情况,在i-1列时为第三种图形情况。

第二种情况:变成第二种图形情况的可能情况,在i-1列时为第三种图形情况(将第一个图形放在上面空格处),在i-2列时为第一种图形情况。

第三种情况:变成第三种图形情况,与第二种情况的状态转移方程逻辑相似,只是放的在下面。                                                                                                                                                             

http://www.lryc.cn/news/615563.html

相关文章:

  • Web前端之Vue框架
  • 【牛客刷题】小红的区间删除
  • MM-2025 | 浙大vivo需求驱动的具身导航!CogDDN:具有基于决策优化和双过程思维的认知驱动导航方法
  • 客服Agent革命:智能客服系统的技术实现与效果评估
  • PyQt5技术栈简述
  • 如何搭建ELK
  • 【Spring Boot 快速入门】八、登录认证(二)统一拦截
  • 环路补偿知识
  • 算法_python_学习记录_01
  • 比较useCallback、useMemo 和 React.memo
  • leetcode 11. 盛最多水的容器 -java
  • 欢迎走进《励曼旋耕》
  • HarvardX TinyML小笔记1(番外2:神经网络)
  • 物联网之常见网络配置
  • UE破碎Chaos分配模型内部面材质
  • 编程速递:2025 年巴西 Embarcadero 会议,期待您的到来
  • 【unitrix数间混合计算】2.10 小数部分特征(bin_frac.rs)
  • 【QT】QMainWindow:打造专业级桌面应用的基石
  • pdf预览Vue-PDF-Embed
  • Linux下管道的实现
  • js获取当前时间
  • 基于dynamic的Druid 与 HikariCP 连接池集成配置区别
  • Web自动化技术选择
  • [Oracle] TRUNC()函数
  • 11. 为什么要用static关键字
  • Qt Graphics View框架概述
  • SpringBoot日志关系
  • 分治-快排-面试题 17.14.最小k个数-力扣(LeetCode)
  • 【Datawhale AI夏令营】让AI读懂财报PDF(多模态RAG)(Task 2)
  • 【无标题】六边形结构在二维拓扑量子色动力学模型中确实具有独特优势,并构建完整的二维拓扑量子色动力学模型。