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

按照动态规划解题顺序,首先,我们要定义状态表示,这里根据题意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;}
这是我们的代码
相关文章:
蓝桥杯备考:动态规划入门题目之下楼梯问题
按照动态规划解题顺序,首先,我们要定义状态表示,这里根据题意f[i]就应该表示有i个台阶方案总数 第二步就是 确认状态转移方程,画图分析 所以实际上f[i] 也就是说i个台阶的方案数实际上就是第i-1个格子的方案数第i-2个格子的方案数…...
【树莓派学习】树莓派3B+的安装和环境配置
【树莓派学习】树莓派3B的安装和环境配置 文章目录 【树莓派学习】树莓派3B的安装和环境配置一、搭建Raspberry Pi树莓派运行环境1、下载树莓派镜像下载器2、配置wifi及ssh3、SSH访问树莓派1)命令行登录2)远程桌面登录3)VNC登录(推…...
算法题(83):寄包柜
审题: 需要我们对模拟柜子的数组进行插入数据和打印数据的操作 思路: 首先我们观察题目,发现可以用一个数组表示一个柜子,而数组中每个索引的位置可以看成是一个个格子。但是柜子的数据量是1e5,且格子的数据量是1e5.如…...
深入浅出MySQL:概述与体系结构解析
目录 1. 初识MySQL 1.1. 数据库 1.1.1. OLTP(联机事务处理)1.1.2. OLAP(联机分析处理) 2. SQL 2.1. 定义2.2. DQL(数据查询语言)2.3. DML(数据操纵语言)2.4. DDL(数据定…...
tin这个单词怎么记
英语单词 tin,一般用作名词,意为“罐头;锡”: tin n.锡;罐头;罐;罐头盒;(盛涂料、胶水等的)马口铁罐,白铁桶;罐装物;金属食品盒;烘焙…...
【0005】Python变量详解
如果你觉得我的文章写的不错,请关注我哟,请点赞、评论,收藏此文章,谢谢! 本文内容体系结构如下: 任何一个语言编写的程序或者项目,都需要数据的支持,没有数据的项目不能称之为一个…...
yolov8_pose模型,使用rknn在安卓RK3568上使用
最近在使用rknn的一些功能,看了看文档以及自己做的一些jni,使用上yolov8_pose的模型. 1.我们先下载一下rknn的模型功能代码,rk有自己做的一套demo 地址:GitHub - airockchip/rknn_model_zooContribute to airockchip/rknn_model_zoo development by creating an account on G…...
HTTP 协议的发展历程:从 HTTP/1.0 到 HTTP/2.0
HTTP 协议的发展历程:从 HTTP/1.0 到 HTTP/2.0 HTTP(HyperText Transfer Protocol,超文本传输协议)是 Web 的基础协议,用于客户端和服务器之间的通信。从 HTTP/1.0 到 HTTP/2.0,HTTP 协议经历了多次重大改…...
PartitionFinder2 安装与使用-bioinfomatics tools 051
1. 引言 PartitionFinder2 是目前针对大中型数据集(核苷酸、氨基酸、形态数据)最理想的分区检测和进化模型选择工具。其推演的最优进化模型结果与 jModelTest2(核苷酸)和 ProTest3(氨基酸)的结果较为接近。…...
MCP与RAG:增强大型语言模型的两种路径
引言 近年来,大型语言模型(LLM)在自然语言处理任务中展现了令人印象深刻的能力。然而,这些模型的局限性,如知识过时、生成幻觉(hallucination)等问题,促使研究人员开发了多种增强技…...
ARM 架构下 cache 一致性问题整理
本篇文章主要整理 ARM 架构下,和 Cache 一致性相关的一些知识。 本文假设读者具备一定的计算机体系结构和 Cache 相关基础知识,适合有相关背景的读者阅读 1、引言 简单介绍一下 Cache 和内存之间的关系 在使能 Cache 的情况下,CPU 每次获取数…...
GB28181未来发展趋势,如何借助于EasyGBS国标GB28181平台+EasyGBD国标GB28181设备端抓住大机会
GB28181规范目前已经迎来了2022版,随着规范行业影响力和应用范围越来越大,相信还会有类似2028、2030等迭代版本出来,我们预测的GB28181发展趋势可能会是以下几个方面,感兴趣的也可以跟我单独探讨: 技术标准持续优化&a…...
代数结构—笔记
线性空间 如果满足以下性质,则域 K K K上定义了二元运算(加法)与二元函数(数乘)的非空集合 X X X称为线性空间。 1、加法封闭性:对任意 u , v ∈ X u, v \in X u,v∈X,存在 u v ∈ X uv\in X …...
tcc编译器教程1 配置tcc编译器环境
TinyCC(又名TCC)是一款开源小型但超快速的C编译器。下面介绍在windows下使用 1软件下载 tcc编译器官网为 https://www.bellard.org/tcc/ 下载地址为 http://download.savannah.gnu.org/releases/tinycc/ 选择其中tcc-0.9.27-win64-bin.zip进行下载 htt…...
安全模块设计:token服务、校验注解(开启token校验、开启签名校验、允许处理API日志)、获取当前用户信息的辅助类
文章目录 引言pom.xmlI 校验注解ApiValidationII token服务TokenService获取当前用户信息的辅助类III 域登录接口响应数据登陆用户信息引言 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/PO…...
机器学习:线性回归,梯度下降,多元线性回归
线性回归模型 (Linear Regression Model) 梯度下降算法 (Gradient Descent Algorithm) 的数学公式 多元线性回归(Multiple Linear Regression)...
报错The default superclass, “jakarta.servlet.http.HttpServlet“(已经配置好tomcat)
报错报错DescriptionResourcePathLocationType The default superclass,“jakarta.servlet.http.HttpServlet”, according to the project’s Dynamic Web Module facet version (5.0), was not found on the Java Build Path. 解决办法: 根据错误信息࿰…...
【人工智能】数据挖掘与应用题库(1-100)
1、涉及变化快慢的问题可以考虑使用导数来分析。 答案:对 2、导数的几何意义是曲线在某点处切线的斜率。 答案:对 3、函数在某点的左导数存在,则导数就存在。 答案:错 4、关于梯度下降算法,下列说法错误的是( ) 错误:梯度下降算法能找到函数精确的最小值。 5、正…...
C#委托(delegate)的常用方式
C# 中委托的常用方式,包括委托的定义、实例化、不同的赋值方式以及匿名委托的使用。 委托的定义 // 委托的核心是跟委托的函数结构一样 public delegate string SayHello(string c);public delegate string SayHello(string c);:定义了一个公共委托类型 …...
【弹性计算】弹性裸金属服务器和神龙虚拟化(一):功能特点
弹性裸金属服务器和神龙虚拟化(一):功能特点 特征一:分钟级交付特征二:兼容 VPC、SLB、RDS 等云平台全业务特征三:兼容虚拟机镜像特征四:云盘启动和数据云盘动态热插拔特征五:虚拟机…...
小结:BGP 的自动聚合与手动聚合
BGP 的自动聚合与手动聚合 BGP 在大规模网络中,通常会进行路由聚合(Route Aggregation),即将多个更具体(更小)的路由前缀合并成一个更大(更粗略)的前缀,以减少 BGP 路由…...
CTF中pwn shellcode题目
CTF中pwn shellcode题目 下面是一些shellcode代码和绕过技巧。 一些只给payload或者exp一把梭 首先给出两个常用shellcode仓库,可以检索需要的shellcode shellcode databaseexploit-db 基础 基础shellcode shellcode asm(shellcraft.sh())生成指定函数 用法…...
Conda 环境搭建实战:从基础到进阶
在当今复杂多变的软件开发与数据科学领域,拥有一个稳定、可复现且易于管理的开发环境是项目成功的基石。Conda 作为一款强大的跨平台环境管理与包管理工具,为开发者提供了便捷高效的环境搭建与依赖管理解决方案。本文将深入探讨 Conda 环境搭建的实战技巧…...
深入解析:域名转换成 IP 地址的多种方式
深入解析:域名转换成 IP 地址的多种方式 在互联网的世界里,我们日常访问网站时输入的是易于记忆的域名,比如 “www.example.com”,但计算机之间通信实际上依靠的是 IP 地址。那么,域名是如何转换成 IP 地址的呢&#x…...
大模型function calling:让AI函数调用更智能、更高效
大模型function calling:让AI函数调用更智能、更高效 随着大语言模型(LLM)的快速发展,其在实际应用中的能力越来越受到关注。Function Calling 是一种新兴的技术,允许大模型与外部工具或API进行交互,从而扩…...
LeetCode:131. 分割回文串(DP Java)
目录 131. 分割回文串 题目描述: 实现代码与解析: 动态规划 原理思路: 131. 分割回文串 题目描述: 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。…...
计算机毕业设计SpringBoot+Vue.js贸易行业CRM系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
虚拟机中的指示命令
1. 复制文件:cp 源文件 目标文件(cp file1.txt file2.txt) 2. 复制文件夹:cp -r 源文件夹 目标文件夹(cp -r dir1 dir2) 3. 创建一个空的文件:touch file1.txt 4. 创建一个空目录&a…...
图像分类项目2:鸟类图像分类
1 数据集处理 1.1数据集下载 数据集来源:kaggle,网址:https://www.kaggle.com/,点击进入网站,左侧选择Datasets。 进入后搜索栏搜索关键词bird。此时出现很多数据集可以选择,推荐选择第一个或者第三个。…...
Redis数据结构-List列表
1.List列表 列表类型适用于存储多个有序的字符串(这里的有序指的是强调数据排列顺序的重要,不是升序降序的意思),列表中的每个字符串称为元素(element),一个列表最多可以存储2^32-1个元素。在R…...
