蓝桥杯备考:动态规划入门题目之下楼梯问题

server/2025/3/3 9:14:52/

按照动态规划解题顺序,首先,我们要定义状态表示,这里根据题意f[i]就应该表示有i个台阶方案总数

第二步就是 确认状态转移方程,画图分析

所以实际上f[i] 也就是说i个台阶的方案数实际上就是第i-1个格子的方案数+第i-2个格子的方案数+第i-3个格子的方案数,所以状态转移方程就是f[i]=f[i-1]+f[i-2]+f[i-3]

下一步就是我们的初始化,我们的初始化要遵循两个要求,1是保证填表正确,2是不越界

如果我们从0,1,2开始填的话下标会越界 所以我们就把0,1,2三个格子初始化,f[0]是1还是0呢?f[0]就是没有台阶,我们是算一种方案还是算0种方案呢,我们先不管他,我们先看1 一个台阶上的方案只有一个,f[1]  = 1   再看2  2个台阶上的方案无非就是一个格子一个格子上 和两个格子一起上,方案是2 个 f[2] = 2  我们再看一下3,3的台阶上的方案如图,很明显是四个,所以我们f[0]应该填1

下一步就是确认填表顺序了,我们应该从第三个开始填,从左到右

废话不说我们来实现一下我们的代码

#include <iostream>
using namespace std;
typedef long long LL;
const int N = 600;
LL f[N];
int main()
{f[0] = 1;f[1] = 1;f[2] = 2;LL n; cin >> n;for(LL i = 3;i<=n;i++){f[i] = f[i-1]+f[i-2]+f[i-3];}cout << f[n] << endl;}

代码很简单,和斐波那契数列特别像,也可以说它是一个斐波那契模型

但是!我们可以对空间进行一些优化,虽然我们比赛里空间不是大事儿,但是!后面在学背包的时候,我们的空间的优化对时间也能优化

与其用数组,其实我们可以用若干变量来完成我们的代码,就不用再开数组了

如图,我们令t=a+b+c 然后让c变成t,但是又不能直接把c赋给t,我们要把abc整体向右边挪动一位,我们应该先把b=c ,然后a=b,最后再把c=t  然后我们再进入下一个循环算4,如果我们求3这个格子的话,我们循环一次就达到了,我们求4这个格子,循环两次,求n这个格子,循环n-3+1次也就是两闭区间

#include <iostream>
using namespace std;
typedef long long LL;int main()
{LL a,b,c;a = 1;b = 1;c = 2;LL n; cin >> n;for(LL i = 3;i<=n;i++){LL t = a+b+c;a = b;b = c;c = t;}if(n==1) cout << 1 << endl;elsecout << c << endl;}

这是我们的代码


http://www.ppmy.cn/server/172020.html

相关文章

爬虫:mitmproxy抓包工具的使用和实时抓包处理案例

文章目录 一、引言二、mitmproxy 简介2.1 什么是 mitmproxy2.2 mitmproxy 的主要功能2.3 mitmproxy 的三种模式三、mitmproxy 的安装3.1 安装 mitmproxy3.2 配置系统代理3.3 安装 CA 证书四、mitmproxy 的基本使用4.1 启动 mitmproxy4.2 常用命令4.3 查看流量五、mitmproxy 的脚…

计算机视觉 |解锁视频理解三剑客——TimeSformer

一、引言 在当今数字化时代&#xff0c;视频数据呈爆炸式增长&#xff0c;从日常的社交媒体分享到安防监控、医疗影像、自动驾驶等专业领域&#xff0c;视频无处不在。视频理解作为计算机视觉领域的重要研究方向&#xff0c;旨在让计算机能够像人类一样理解视频中的内容&#…

AF3 crop_chains函数解读

AlphaFold3 feature_processing_multimer模块的crop_chains函数的功能是对多条链的蛋白质结构预测任务中的MSA(多序列比对)特征和模板特征进行裁剪(cropping)。裁剪的目的是为了控制输入模型的MSA序列数量和模板数量,以适应模型的输入限制或优化计算效率。 源代码: def…

【Spring】统一功能处理

目录 前言 拦截器 什么是拦截器&#xff1f; 拦截器的使用 自定义拦截器 注册并配置拦截器 拦截器详解 拦截路径 拦截器执行流程 适配器模式 统一数据返回格式 优点 统一异常处理 前言 在前面中&#xff0c;我们已经学习了spring中的一些常用操作&#xff0c;那么…

大虫刷题新增华为科目介绍,承接课程转让服务

大虫刷题2025.3月新增科目如下&#xff1a; 机器视觉两门 HCIA H12-511 HCIP H12-521 传输两门 HCIA H31-311 HCIP H31-341 人工智能AI 一门 HCIP H12-321 (AI-EI) 另外 云服务H13-821 己完成更新 新增60多题 后期将持续更新 和加入更多科目 目前大虫刷题有如下题…

【云原生之kubernetes实战】在k8s环境下部署Vikunja任务管理工具

【云原生之kubernetes实战】在k8s环境下部署Vikunja任务管理工具 前言一、Vikunja介绍1.1 Vikunja简介1.2 Vikunja主要特点1.3 使用场景二、kubernetes介绍2.1 kubernetes简介2.2 kubernetes特点三、本次实践介绍3.1 本次实践简介3.2 本次环境规划四、检查k8s环境4.1 检查工作节…

1.C语言初识

C语言初识 C语言初识基础知识hello world数据类型变量、常量变量命名变量分类变量的使用变量的作用域 常量字符字符串转义字符 选择语句循环语句 函数&#xff1b;数组函数数组数组下标 操作符操作符算术操作符移位操作符、位操作符赋值操作符单目操作符关系操作符逻辑操作符条…

升级Office软件后,Windows 系统右键里没有新建Word、Excel、PowerPoint文件的解决办法

我办公用的电脑&#xff0c;Office 2013 已经用了好多年&#xff0c;最近突发奇想给升级到了 Ofiice 2024。升级过程还蛮顺利的&#xff0c;但是安装完成后&#xff0c;发现点右键里没有新建Word、Excel、PowerPoint&#xff0c;开始菜单里 Word、Excel、PowerPoint 使用都正常…