每日一题<积木画>

简介: 每日刷题

image.png根据题目来看,要求所有的排列方法,由于整个积木只有两行因此比较简单一点。dp是一个二维数组分别表示列和当前积木画的状态。0为空,1为第二层有木板第一层没有,2为第一层有木板第二层没有,3为满。

其实说白了当前列为空即上一列是满的,由此dp[i][0] = dp[i-1][3],于是对dp的初始化便是dp[1][3] = 1,dp[1][0]= 1。

接着考虑dp[i][1]的状况,状态为1则说明当前列上行是没有木块而下层有,那么就有两种可能实现这个情况,

image.png

image.png

即可以换算成dp[i][1] = dp[i-2][3] + dp[i-1][1]。

而dp[i][2]则相反dp[i][2] = dp[i-1][0] + dp[i-1][1]。

dp[i][3]则有四种情况

image.png

image.png

image.png

image.png

由此dp[i][3] = dp[i-2][3] + dp[i-1][3] + dp[i-1][1] + dp[i-1][2]。

直接上源码

#include<iostream>
using namespace std;
int n;
long long dp[10000000][3];
#define mod 1000000007
int main()
{
  cin >> n;
  dp[0][3] = 1;
  dp[1][3] = 1;
  for (int i = 2; i <= n; i++)
  {
    dp[i][0] = dp[i - 1][3];
    dp[i][1] = (dp[i - 1][0] + dp[i - 1][2]) % mod;
    dp[i][2] = (dp[i - 1][0] + dp[i - 1][1]) % mod;
    dp[i][3] = (dp[i - 2][3] + dp[i - 1][3] + dp[i - 1][1] + dp[i - 1][2]) % mod;
  }
  cout << dp[n][3];
  return 0;
}

image.gif

目录
相关文章
|
算法 计算机视觉
OpenCV(四十一):图像分割-分水岭法
OpenCV(四十一):图像分割-分水岭法
280 0
|
Java Linux 开发工具
linux如何编译安装源码包软件
源码包软件是包含源代码的软件包,常见于Linux和BSD系统,如fcitx和Lumaqq。开源软件需满足源代码可见且有宽松许可,如GPL。安装源码包通常涉及解压、编译和安装步骤,使用`tar`命令解包,通过`./configure`, `make`, `make install`进行编译安装。软件源码允许定制和二次开发,但须遵循许可协议。安装前确保安装了必要的开发工具和库。对于perl和python程序,直接使用perl或python命令安装。推荐使用系统软件包管理工具如RPM、yum或apt进行管理,以简化流程。
376 0
|
6月前
|
关系型数据库 MySQL 数据安全/隐私保护
大数据新视界--大数据大厂之MySQL 数据库课程设计:数据安全深度剖析与未来展望
本文深入探讨数据库课程设计 MySQL 的数据安全。以医疗、电商、企业案例,详述用户管理、数据加密、备份恢复及网络安全等措施,结合数据安全技术发展趋势,与《大数据新视界 -- 大数据大厂之 MySQL 数据库课程设计》紧密关联,为 MySQL 数据安全提供全面指南。
大数据新视界--大数据大厂之MySQL 数据库课程设计:数据安全深度剖析与未来展望
|
前端开发 JavaScript 开发工具
前端项目增加eslint全过程
如何在前端项目中安装并配置ESLint和Prettier,包括VSCode插件的安装、npm包的全局安装、.eslintrc.js配置文件的生成以及编辑器设置的调整。
216 6
|
存储 缓存 自然语言处理
【Elasticsearch】Elasticsearch倒排索引详解
【Elasticsearch】Elasticsearch倒排索引详解
449 12
|
存储 安全 编译器
热补丁(Livepatch) 【ChatGPT】
热补丁(Livepatch) 【ChatGPT】
|
JavaScript 容器
vue element plus Space 间距
vue element plus Space 间距
351 0
|
机器学习/深度学习 PyTorch 算法框架/工具
【单点知识】基于实例讲解PyTorch中的transforms类
【单点知识】基于实例讲解PyTorch中的transforms类
225 0
|
SQL 弹性计算 运维
阿里云短信服务
阿里云短信服务价格表,阿里云短信0.032元一条,阿里云短信价格?阿里云短信怎么收费?阿里云短信多少钱一条,阿里云短信价格0.032元一条
508 0