蓝桥杯 2022 省B 积木画

这是个典型的动态规划问题,重点在于找到他的递推方程。

可简单算出填满第0 1 2 3 4列个数为0 1 2 5 11;
运气好点,找到递推公式dp[i]=2*dp[i-1]+dp[i-3];
直接解决了。

但我们还是按照动态规划一步一步来。

思路分析:

  1. 状态定义

    • dp[i][j] 表示在第 i 步时,处于状态 j 的方案数。其中,状态 j 有三种可能性:
      • j = 0 表示在第 i 步时处于上突状态。
      • j = 1 表示在第 i 步时处于占满状态。
      • j = 2 表示在第 i 步时处于下突状态。
  2. 初始状态

    • 初始时,只有在第 0 步处于占满状态的方案数为 1,其他状态的方案数都为 0,即 dp[0][1] = 1
  3. 状态转移方程

    • 对于每一步 i,可以根据前一步的状态推导出当前步的状态。
    • 上突状态 (j = 0) 可以由下一步的下突状态 (j = 2) 和当前步的占满状态 (j = 1) 推导得到,即 dp[i][0] = (dp[i - 2][1] + dp[i - 1][2]) % mod
    • 占满状态 (j = 1) 可以由前一步的三种状态得到,即 dp[i][1] = ((dp[i - 2][1] + dp[i - 1][1]) % mod + (dp[i - 1][0] + dp[i - 1][2]) % mod) % mod
    • 下突状态 (j = 2) 可以由上一步的下突状态 (j = 0) 和当前步的上突状态 (j = 1) 推导得到,即 dp[i][2] = (dp[i - 2][1] + dp[i - 1][0]) % mod
  4. 边界条件

    • 对于 i = 0i = 1,已知初始状态,无需计算。
    • 对于 i = 2,根据情况可直接给出结果。
  5. 结果输出

    • 输出填满一个大小为 2 × 2 × n 的画布所需的不同方式数,即 dp[n][1]

综上所述,这段代码使用动态规划的思想,通过状态转移方程计算填满画布所需的不同方式数,并输出结果。

#include<iostream>
#include<bits/stdc++.h>
using namespace std;

const int mod = 1e9 + 7; // 定义取模的值

int n, dp[10000005][3]; // n表示输入的整数,dp用于存储状态

int main() {
    cin >> n; // 读取输入的整数

    dp[0][1] = 1; // 初始状态:在第0步处于状态1(即占满状态)的方案数为1

    // 动态规划计算每一步的方案数
    for (int i = 1; i <= n; i++) {
        // 状态转移方程:
        // 0为上突,2为下突,1为占满
        dp[i][0] = (dp[i - 2][1] + dp[i - 1][2]) % mod; // 上突状态的方案数等于在第i-2步处于下突状态的方案数与在第i-1步处于占满状态的方案数之和
        dp[i][1] = ((dp[i - 2][1] + dp[i - 1][1]) % mod + (dp[i - 1][0] + dp[i - 1][2]) % mod) % mod; // 占满状态的方案数等于在第i-2步处于占满状态的方案数与在第i-1步处于占满状态的方案数之和,以及在第i-1步处于上突状态的方案数与下突状态的方案数之和
        dp[i][2] = (dp[i - 2][1] + dp[i - 1][0]) % mod; // 下突状态的方案数等于在第i-2步处于占满状态的方案数与在第i-1步处于上突状态的方案数之和
    }

    cout << dp[n][1]; // 输出填满一个大小为2 × 2 × n的画布所需的不同方式数

    return 0;
}

占满状态有个很不好想到的类型,就是dp[i-2][1],本来我们都是只考虑加一个积木后的情景,因为我们不考虑除了上下突和占满的其他情况,有种情况是0000,这个情况上下两行相差2格,不属
                                                                                          00
于三种情况,而这样的情况,从i-2到i可以有两个横着放的I这种情况,而竖着放的I的情况与i-1加个竖着的I的情况重合了。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/480312.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

雅博书城在线系统|基于SSM框架+ Mysql+Java+ Tomcat的雅博书城在线系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

YOLOv5-Y5周:yolo.py文件解读

本文为&#x1f517;365天深度学习训练营 中的学习记录博客 原作者&#xff1a;K同学啊|接辅导、项目定制 我的环境&#xff1a; 1.语言&#xff1a;python3.7 2.编译器&#xff1a;pycharm 3.深度学习框架Tensorflow/Pytorch 1.8.0cu111 一、代码解读 import argparse i…

【C++】1599. 米老鼠偷糖果

问题&#xff1a;1599. 米老鼠偷糖果 类型&#xff1a;基本运算、整数运算 题目描述&#xff1a; 米老鼠发现了厨房放了 n 颗糖果&#xff0c;它一次可以背走 a 颗&#xff0c;请问米老鼠背了 x 次之后还剩多少颗&#xff1f;&#xff08;假设 x 次之后一定有糖果剩下&#x…

pytorch多层感知机

目录 1. 多层感知机2. 多层感知机loss梯度推导3. pytorch示例 1. 多层感知机 有多个输入节点、多个中间节点和多个输出节点 2. 多层感知机loss梯度推导 3. pytorch示例

从0到1实现RPC | 02 RpcConsumer的远程调用

一、RPC的简化版原理如下图&#xff08;核心是代理机制&#xff09;。 1.本地代理存根: Stub 2.本地序列化反序列化 3.网络通信 4.远程序列化反序列化 5.远程服务存根: Skeleton 6.调用实际业务服务 7.原路返回服务结果 8.返回给本地调用方 二、新建一个模块rpc-demo-c…

【Qt】使用Qt实现Web服务器(六):QtWebApp用户名密码登录

1、示例 1)演示 2)登录 3)显示 2、源码 示例源码Demo1->LoginController void LoginController::service(HttpRequest& request, HttpResponse& response) {

公司内部局域网怎么适用飞书?

随着数字化办公的普及&#xff0c;企业对于内部沟通和文件传输的需求日益增长。飞书作为一款集成了即时通讯、云文档、日程管理、视频会议等多种功能的智能协作平台&#xff0c;已经成为许多企业提高工作效率的首选工具。本文将详细介绍如何在公司内部局域网中应用飞书&#xf…

【Bug】记录2024年遇到的Bug以及修复方案

--------------------------------------------------------分割线 2024.3.22------------------------------------------------------- 1、load_sample_image raise AttributeError(“Cannot find sample image: %s” % image_name) AttributeError: Cannot find sample ima…

只有IP地址怎么实现HTTPS访问?

只有IP地址也可以实现HTTPS访问。虽然大部分SSL证书通常是针对域名发放&#xff0c;但也存在专门针对IP地址发放的SSL证书&#xff0c;这类证书允许服务器通过HTTPS协议为其公网IP地址提供安全的Web服务。当服务器配置了基于IP地址的SSL证书后&#xff0c;用户可以通过“https:…

MATLAB | R2024a更新了哪些好玩的东西?

Hey 好久不见&#xff0c;大家一看三月中下旬这个时间节点也应该能猜到这篇更新什么内容&#xff0c;没错MATLAB R2024a正式版发布啦啦拉拉&#xff0c;直接来看看有啥我认为比较有意思的更新点吧&#xff1a; 1 极坐标表达式绘制 将会使用使用fpolarplot函数来替换ezpolar&a…

DashScope - 阿里模型服务灵积

文章目录 关于 DashScope快速上手代码调用http 请求示例Python 调用 关于 DashScope 官方主页&#xff1a;https://dashscope.aliyun.comPYPI : https://pypi.org/project/dashscope/支持模型&#xff1a;https://dashscope.console.aliyun.com/model DashScope灵积模型服务建…

目标控制器数字孪生系统的研究与设计

文章来源&#xff1a;铁路计算机应用,2023,32(10):36-41. 作者&#xff1a;许婧&#xff0c;杨硕&#xff0c;季志均 摘要&#xff1a;随着目标控制器&#xff08;OC&#xff0c;Object Controller&#xff09;系统在轨道交通领域的推广应用&#xff0c;其硬件投入较高、研发…

基于SSM的手机商城管理系统+数据库+论文+免费远程调试

项目介绍: 基于SSM的手机商城管理系统。Javaee项目&#xff0c;采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringMvc Mybatis JspBootstrapLayui来实现。MySQL数据库作为系统…

【vue3.0】实现导出的PDF文件内容是红头文件格式

效果图: 编写文件里面的主要内容 <main><div id"report-box"><p>线索描述</p><p class"label"><span>线索发现时间:</span> <span>{{ detailInfoVal?.problem.createdDate }}</span></p><…

Springboot+vue的四川美食分享网站+数据库+报告+免费远程调试

项目介绍: Springbootvue的四川美食分享网站。Javaee项目&#xff0c;springboot vue前后端分离项目 本文设计了一个基于Springbootvue的前后端分离的四川美食分享网站&#xff0c;采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&am…

WORD某一段格式调整,其他段落也调整

在编辑WORD文字格式时&#xff0c;有时候会出现WORD某一段格式调整&#xff0c;其他段落的格式直接就乱了&#xff0c;该如何修复&#xff1f; 答&#xff1a;问题的根源在于格式的自动更新&#xff0c;把自动更新前面的勾选框取消即可。

同步服务器操作系统公网仓库到本地02--搭建http内网仓库源 _ 麒麟KOS _ 统信UOS _ 中科方德 NFSCNS

原文链接&#xff1a;同步服务器操作系统公网仓库到本地02 —搭建http内网仓库源| 麒麟KOS | 统信UOS | 中科方德 NFSCNS Hello&#xff0c;大家好啊&#xff01;继之前我们讨论了如何同步服务器公网仓库到本地服务器之后&#xff0c;今天我们将进入这个系列的第二篇文章——通…

编程出现bug?怎么用Python打印异常

在 Python 编程中&#xff0c;异常是指程序执行过程中出现的错误或异常情况。当程序遇到异常时&#xff0c;为了更好地调试和定位问题&#xff0c;我们需要打印异常信息。本文将详细介绍如何在 Python 中打印异常&#xff0c;并提供一些示例和注意事项。 一、try-except 语句捕…

Ubuntu 安装 Carla仿真环境

1、系统要求 Ubuntu 16.04/18.04/20.04 CARLA 为 16.04 之前的 Ubuntu 版本提供支持。然而&#xff0c;Unreal Engine需要合适的编译器才能正常工作。 CARLA 服务器至少需要 6 GB GPU&#xff0c;但建议使用 8 GB。 2、安装NIVDIA驱动 BISO设置 开机F12&#xff0c;进入BIOS…

如何让电脑定时开机?这个方法你一定要学会

前言 前段时间小白在上班的时候&#xff0c;个人使用一台台式机和一台笔记本电脑。台式机并不是经常使用&#xff0c;但整个公司的数据中心是建立在小白所使用的那台台式机上。 如果台式机没有开机&#xff0c;同事们就没办法访问数据中心获取自己想要的资料。领导也没办法链…