【动态规划】03斐波那契数列模型_最小花费爬楼梯_C++(easy1)

题目链接:leetcode使用最小花费爬楼梯


目录

题目解析:

算法原理

1.状态表示

2.状态转移方程

3.初始化

4.填表顺序

5.返回值

编写代码


题目解析:

题目让我们求达到楼梯顶部的最低花费.

由题可得:

 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用(每一阶所需的费用由cost[ ]里的值决定)。

可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯,支付费用后,可选择向上爬一个或者两个台阶

那么楼顶在哪?

我们从题目里的实例一来分析:

如果楼顶是i,那么这里的最小花费为应该为10,但是这里输出是15

所以楼顶是在这里:


算法原理:

1.状态表示

先创建一个dp表

首先先思考dp表里面的值所表示的含义(是什么?)

dp[i]表示在到达i位置的最小花费

这种状态表示怎么来的?

1.经验+题目要求

经验:以i位置为结尾,

题目让我们求达到楼梯顶部的最低花费,那么这里我们可以dp[i]来表示。

所以这里我们用i表示楼顶;

2.状态转移方程

dp[i]等于什么?

用之前或者之后的状态,推导出dp[i]的值;

根据最近的最近的一步,来划分问题

我们这里有两种情况:

第一种:

到达i-2是最小花费,支付cost[i-2]后跳两步到达楼顶;

第一种:

到达i-1是最小花费,支付cost[i-1]后跳一步到达楼顶;

所以:

这里我们只要返回这两种情况的最小值就可以了

我们这里会用到min:

综上所述:

dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])

3.初始化

(保证填表的时候不越界)

由题目得:

在第0,1阶的时候是不用花费的;

所以这里要初始化为0;

4.填表顺序

(为了填写当前状态的时候,所需要的状态已经计算过了)

这里所需要的状态是:dp[i-1]、dp[i-2]

这几个数都是在i之前的,

所以我们这里是从左向右填表;

5.返回值

(根据题目要求和状态表示)

综上分析:

返回值为:dp[n]


编写代码:

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {//1.创建dp表//2.初始化//3.填表//4.返回结果int n=cost.size();vector <int> dp(n+1);//因为vector会把表里初始化为0,所以这里我们不用考虑初始化的情况for(int i=2;i<=n;i++){dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);}return dp[n];}
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第6章:知识建模:概述、方法、实例

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

java--LinkedHashSet集合的底层原理和TreeSet集合

1.LinkedHashSet底层原理 ①依然是基于哈希表(数组、链表、红黑树)实现的 ②但是&#xff0c;它的每个元素都额外的多了一个双链表的机制记录它前后元素的位置。 2.TreeSet ①特点&#xff1a;不重复、无索引、可排序(默认升序排序&#xff0c;按照元素的大小&#xff0c;由…

Nacos热更新(动态获取配置)

写在前面&#xff1a;各位看到此博客的小伙伴&#xff0c;如有不对的地方请及时通过私信我或者评论此博客的方式指出&#xff0c;以免误人子弟。多谢&#xff01;如果我的博客对你有帮助&#xff0c;欢迎进行评论✏️✏️、点赞&#x1f44d;&#x1f44d;、收藏⭐️⭐️&#…

el-date-picker 限制选择范围最大为一年,设置快捷选项,设置默认时间

el-date-picker 限制选择范围最大为一年&#xff1a; 主要代码为&#xff1a;:picker-options"pickerOptions" 以及 blur"pickerBlur" <el-date-pickerv-model"transactionTime"type"daterange"style"width: 200px"size…

盒马补贴量价-2021KDD

概述&#xff1a; 电商商品定价三个关键问题&#xff1a; 在只有观测数据的时候&#xff0c;怎么构建价格弹性&#xff0c;现在来看这就是一个反事实推断的问题&#xff0c;不仅是如何做的问题&#xff0c;还有如何评估的问题。长周期的规划决策问题怎么建模 & 求解&#…

从零开始学UniApp微信小程序开发:头部适配技巧让你事半功倍!

在 UniApp 中&#xff0c;在微信小程序开发中&#xff0c;头部适配可以通过修改 pages.json 中的 navigationStyle 配置项来实现&#xff0c;具体操作步骤如下&#xff1a; 1.进入 pages.json 文件 在 UniApp 项目的根目录中找到 pages.json 文件&#xff0c;打开该文件。 2…

Win11专业版,eNSP启动失败,错误代码40 解决方法

微软Win11系统默认开启的 Virtualization-based Security &#xff08;VBS&#xff09;“基于虚拟化的安全性”会导致游戏、跑分性能下降。VBS 基于虚拟化的安全性&#xff0c;通常称为内核隔离。使用硬件虚拟化在内存中创建安全区域&#xff0c;为其他安全功能提供了一个安全平…

Appilied energy论文复现:含多类型充电桩的电动汽车充电站优化配置方法程序代码!

本程序参考Applied energy论文《Optimal planning of electric vehicle charging stations comprising multi-types of charging facilities》&#xff0c;文中主要对多类型充电桩的电动汽车充电站进行优化配置&#xff0c;程序较为简单和基础&#xff0c;具有较强的可扩展性和…

adb命令学习记录

1、 adb ( android debug bridge)安卓调试桥&#xff0c;用于完成电脑和手机之间的通信控制。 xcode来完成对于ios设备的操控&#xff0c;前提是有个mac电脑。 安卓系统是基于linux内核来进行开发的。 2、adb的安装: 本身 adb是 android SDK 其中自带的工具&#xff0c;用于完…

排坑指南之STM32串口接收队列定时异常导致接收失败

背景: 公司的项目,今天讲的这部分功能主要是和IC卡读取板进行串口通讯,然后将读取回来的IC卡保存在本地。我在调试的过程中发现了一个问题,上电刚开始的阶段,程序是好用的,能读取回来IC卡卡号,然后运行一段时间之后,就读取不回来卡号了,刷卡没有响应。 摘要: 讲述STM…

C语言--每日练习题--Day38

第一题 1. 下列代码的运行结果&#xff08;&#xff09; short i 65537; int j i 1; printf("i%d,j%d\n", i, j); A&#xff1a;i 65537&#xff0c;j 65538 B&#xff1a;i 1&#xff0c;j 2 C&#xff1a;i -1&#xff0c;j 0 D&#xff1a;i 1&#xff…

【基础知识】大数据概述

关键词—分布式 化整为零&#xff0c;再化零为整 大数据的定义 传统数据库处理起来困难的数据集。 发展历程 中国开源生态图谱2023 参考内容 中国开源生态图谱 2023.pdf 技术组件说明 数据集成 sqoop、dataX、flume 数据存储 hdfs、kafka 数据处理 mapreduce、hive…

C++学习笔记(十一)------has_a和use_a关系

文章目录 前言 一、has_a关系 1.1 has_a概念 1.2 has_a中构造和析构的顺序 1.3 has_a对象的内存情况 二、use_a关系&#xff08;友元关系&#xff09; 1.友元函数&#xff1a; 2.友元类 3 使用多文件编程的方式重新编辑上述代码 总结 前言 随着技术的革新&#xff0c;出现各种各…

通俗易懂,什么是.NET Core以及.NET Core能做什么

我们都知道.NET Core是一个可以用来构建现代、可伸缩和高性能的跨平台软件应用程序的通用开发框架。可用于为Windows、Linux和MacOS构建软件应用程序。与其他软件框架不同&#xff0c;.NET Core是最通用的框架&#xff0c;可用于构建各种软件&#xff0c;包括Web应用程序、移动…

搭建商城系统的构架如何选择?

近期有很多网友在csdn、gitee、知乎的评论区留言&#xff0c;搭建商城系统是选择单体架构还是微服务架构&#xff0c;这里先说结论&#xff0c;如果是纯电商的话&#xff0c;商城系统的架构建议选择单体架构。我们分析下微服务和单体架构的优劣势&#xff0c;就知道了。 一、什…

网易有道强力开源中英双语语音克隆

项目地址&#xff08;基于PromptTTS&#xff09;&#xff1a; https://github.com/netease-youdao/EmotiVoice EmotiVoice Docker镜像 尝试EmotiVoice最简单的方法是运行docker镜像。你需要一台带有NVidia GPU的机器。先按照Linux和Windows WSL2平台的说明安装NVidia容器工具…

ECCV 2024 European Conference on Computer Vision

目录 DatesPeople 官网&#xff1a; https://eccv2024.ecva.net/ 链接 Dates Thursday, February 29, 2024 authors Abstract registration deadlineThursday, March 7, 2024 authors Submission deadlineThursday, March 14, 2024 authors Supplementary materials deadlineM…

17.(vue3.x+vite)组件间通信方式之作用域插槽

前端技术社区总目录(订阅之前请先查看该博客) 示例效果 作用域插槽 父组件中的插槽内容是无法访问到子组件中的数据的,而作用域插槽就是解决获取子组件数据。 父组件代码 <template><div><div>父组件--Hello World!</div><Child>

扁平疣的影响?劲松中西医结合医院结合临床经验分析

提到扁平疣&#xff0c;相信都不陌生&#xff0c;要知道它通常不会引起严重的危害&#xff0c;但仍然会给人们带来一些不适和困扰。除了影响美观之外&#xff0c;扁平疣当然还存在其他一些负面影响。为了让更多人知道扁平疣对健康的影响&#xff0c;今日特邀劲松中西医结合医院…

【JavaWeb学习笔记】8 - HTTP

一、常用文档 请求头 响应头 中间件获取的网页协议和返回的内容 这些称为HTTP协议 请求和响应 常见的请求头 响应头 状态码 HTTP状态码 当浏览者访问一个网页时&#xff0c;浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前&#xff0c;此网页所在的服务…