当前位置: 首页 > 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.dtcms.com/a/323025.html

相关文章:

  • 如何控制需求交付节奏
  • 【数据分析】03 - pandas
  • 深入解析QUIC协议:下一代音视频传输技术的突破与实践
  • 前端如何安全存储 API 密钥 —— 两种实用方案
  • 动手学深度学习(pytorch版):第二章节——预备知识(1)——数据操作
  • pytorch llm 计算flops和参数量
  • 【C++】继承机制全解析
  • Spring-rabbit使用实战七
  • 48伏电气系统—— 铺就电动出行之路的关键技术
  • 大语言模型中的幻觉
  • 24SpringCloud黑马商城微服务整合Seata重启服务报错的解决办法
  • 使用SymPy lambdify处理齐次矩阵的高效向量化计算
  • Poetry与UV——现代Python依赖管理的革新者
  • GitHub 趋势日报 (2025年08月08日)
  • java10学习笔记
  • EPI2ME分析软件测试
  • Java 8 特性
  • PG靶机 - Shiftdel
  • 计算机网络:CIDR地址块划分子网可以使用VLSM吗?
  • 使用 Vuepress + GitHub Pages 搭建项目文档(2)- 使用 GitHub Actions 工作流自动部署
  • [激光原理与应用-206]:光学器件 - SESAM - 基本结构与工作原理
  • “高大上“的SpringCloud?(微服务体系入门)
  • 关于灰度图像相似度的损失函数(笔记)
  • 【Datawhale AI夏令营】基于多模态RAG的企业财报问答系统
  • MySQL弹幕内容字段设计总结
  • Linux Makefile解析
  • 元宇宙技术如何改变社交方式?
  • MyBatis联合查询 - 注解篇
  • QT系统相关
  • gpt-oss 全量技术解读