【学会动态规划】使用最小花费爬楼梯(3)

news2024/11/23 15:49:55

目录

 

动态规划怎么学?

1. 题目解析

2. 算法原理

1. 状态表示

2. 状态转移方程

3. 初始化

4. 填表顺序

5. 返回值

3. 代码编写

写在最后:


动态规划怎么学?

学习一个算法没有捷径,更何况是学习动态规划,

跟我一起刷动态规划算法题,一起学会动态规划!

1. 题目解析

题目链接:746. 使用最小花费爬楼梯 - 力扣(Leetcode)

 老规矩,我们先来分析一下题目,

题目要求计算返回到达楼顶的最低费用,我们先来看看第一个示例,

可以看到他返回的是15,证明15能一步走到楼顶而10不能,

我们由此可以推出,楼顶是超出数组的后一个位置,

知道了这个,题意就基本上理解了。

2. 算法原理

1. 状态表示

根据之前的学习我们已经知道该怎么分析状态表示了,

就是 dp[ i ] 位置表示什么,或者说怎么表示 dp [ i ],根据题目要求,

dp[ i ] 就是到达 i 位置的最小花费。

2. 状态转移方程

推导状态转移方程的技巧其实就是,用之前或者之后的状态,推导出 dp[ i ] 的值。

根据最近的一步划分问题,就好像这道题目,

而最近的一步有两种情况,

1. 从 dp[ i - 1 ] 走一步过来,支付cost[ i - 1 ] 的费用;  

2. 从 dp[ i  - 2 ] 走两步过来,支付cost[ i - 2 ] 的费用。

而 dp[ i ] 就是到达 i 位置的最小花费,

那我们就能得出状态转移方程:

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

3. 初始化

初始化时为了填表的时候不越界。

所以我们需要初始化的就是 dp[ 0 ] 和 dp[ 1 ]。

dp[ 0 ] = dp[ 1 ] = 0。

4. 填表顺序

填表顺序这次还是从左往右。

5. 返回值

因为我们需要到达楼顶,也就是数组后一个位置,所以应该返回的是 dp[ n ]。

3. 代码编写

class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        int size = cost.size();

        // 创建dp表,这样初始化默认填充的是 0 
        vector<int> dp(size + 1);

        // 填表
        for(int i = 2; i <= size; i++) {
            dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
        }

        // 返回结果
        return dp[size];
    }
};

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

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

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

相关文章

webpack项目和vue项目发布,浏览器存在缓存

项目是webpack搭建的每次发步到线上&#xff0c;经常需要手动清楚浏览器缓存才能有效果。vue项目设置在最下面 项目打包的js&#xff08;css也是一致&#xff09;名称都采用哈希值 问题&#xff1a;哈希值在有些情况下打包会不变&#xff0c;导致浏览器使用自己缓存的资源 解…

洗地机选哪个牌子好、洗地机排名

洗地机可以说是现代家居清洁首选设备。因为它比拖把拖地更加高效率&#xff0c;同时对比扫地机和吸尘器拥有更多的清洁功能&#xff0c;干湿垃圾一起拖少。并且自清洁功能能够帮助它更好的清理干净滚刷和管道&#xff0c;清洁使用非常省心省力。下面小编就给大家分享几款家庭清…

红队打靶:Brainpan打靶思路详解(vulnhub)

目录 写在开头 第一步&#xff1a;主机发现和端口扫描 第二步&#xff1a;web渗透 第三步&#xff1a;缓冲区溢出漏洞识别 第四步&#xff1a;定位eip寄存器&#xff08;确定溢出字符串的长度&#xff09; 第五步&#xff1a;ESP扩容&#xff08;判断ESP寄存器的大小是否…

如何在 3ds Max 中使用 Mental Ray 制作逼真的草地和带有光晕的天空

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 首先&#xff0c;您将创建一个平面对象&#xff0c;然后添加一个噪点修改器。在此之上应用毛发和毛皮修饰符。 这将用于模拟逼真的草地。 我们用日光系统创造太阳和天空。为太阳添加镜头和戒指效果以及酷炫…

防火墙规则过期通知

作为规则管理最佳实践&#xff0c;大多数安全管理员为其防火墙规则设置到期日期。过期后&#xff0c;需要更正防火墙规则才能再次激活。但是&#xff0c;由于大多数组织都有数百个规则和多个安全管理员处理这些规则&#xff0c;因此几乎不可能查看过期的规则并手动纠正它们。这…

GPT的体验与思考

文章目录 一、GPT使用过程之对话二、AI大模型训练之文生图三、总结与思考 本文用到的词汇偏口语&#xff0c;甚至是小编自己创造&#xff1b;本文主要关注点在于使用和使用后的思考。 一、GPT使用过程之对话 在chart-gpt刚刚爆火出圈的时候&#xff0c;我并没有选择立马使用、…

力扣 309. 最佳买卖股票时机含冷冻期

一、题目描述 给定一个整数数组 prices&#xff0c;其中第 prices[i] 表示第 i 天的股票价格。​ 设计一个算法计算出最大利润。在满足以下约束条件下&#xff0c;你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#xff09;&#xff1a; 卖出股票后&#xff0c…

Star History 月度开源精选|2023 年 6 月

上一期 Star History 月度精选是写给市场、运营人员的&#xff0c;而这一期回归到 DevTools 类别&#xff0c;我们六月发现了好一些开发者可以用的不错工具&#xff01; AI Getting Started 还记得 Supabase “Build in a weekend” 的广告词吗&#xff01;AI Getting Started…

10个项目瓜分5万美元,邀您参与Sui夏季黑客松最喜爱奖项投票

已经顺利完成第二阶段的项目选拔&#xff0c;40个项目成功入围最终的Demo Day。随着Sui Builder House巴黎站活动的临近&#xff0c;黑客松第三阶段Demo Day的气氛也逐渐热烈。 此次Demo Day将采用线上线下的形式为大家呈现精彩的项目路演&#xff0c;无法到达现场参与活动的朋…

vite + vue 白屏 Uncaught Syntaxerror: Unexpected token ‘?‘

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; 一、问题的描述 突然收到业务方发来的反馈&#xff1a; 浏览器一片空白&#xff0c;开控制台输出&#xff1a;Uncaught Syntaxerror: Unexpected token ? 这个是语法错误。 二、 问题分析&#xff1a; 根据vit…

【数据分享】1929-2022年全球站点的逐年最大持续风速数据(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 对于具体到监测站点的气象数据&#xff0c;之前我们分享过1929-2022年全球气象…

母婴市场进入增长寒冬,AIGC能否为孩子王“供暖”?

文|螳螂观察 作者| 青月 人口负增长这件事&#xff0c;已经使母婴行业成了首批受到冲击的板块之一。用「母婴行业观察」的话来概括&#xff0c;就是“母婴行业正在进入销量低增长甚至零增长、营收利润低增长的挤压式竞争新阶段&#xff0c;并且已经开始了”。 行业内的玩家&…

BI分析中,经营和管理的关系到底是怎样的?

一家企业的CEO在聊BI的时候聊到的一个话题&#xff0c;这个级别的对话就不会聊具体的技术实现了&#xff0c;就会稍微务虚一些。但有时看似务虚的东西&#xff0c;深入去思考一下&#xff0c;其实也并不务虚&#xff0c;考虑的都是抽丝剥茧之后根源性的问题&#xff0c;把一些问…

接口测试原理及Postman详解

接口测试定义 接口是前后端沟通的桥梁&#xff0c;是数据传输的通道&#xff0c;包括外部接口、内部接口。内部接口又包括:上层服 务与下层服务接口&#xff0c;同级接口 生活中常见接口&#xff1a;电脑上的键盘、USB接口&#xff0c;电梯按钮&#xff0c;KFC下单 接口测试…

WebUI自动化必备技能-HTML和css知识详解

学习web自动化的前提条件&#xff1a;手工测试&#xff08;了解各种测试的知识&#xff09;、学习编程语言、学习Web基础、学习自动化测试工具 、学习自动化测试框架 、需要掌握前端的一些知识&#xff0c;无论学习语言还是前端知识&#xff0c;都是为了接下来的脚本和框架做铺…

【C语言】回调函数(qsort)与模拟实现

何思何虑&#xff0c;居心当如止水&#xff1b;勿取勿忘&#xff0c;为学当如流水。— 出自《格言联璧学问类》 解释&#xff1a;无思无虑&#xff0c;心境应当平静如水&#xff1b;不求冒进也不忘记&#xff0c;学业当如流水一般永无止境。 这篇博客我们将会理解回调函数这个概…

长达 1.7 万字的 explain 关键字指南!

当你的数据里只有几千几万&#xff0c;那么 SQL 优化并不会发挥太大价值&#xff0c;但当你的数据里去到了几百上千万&#xff0c;SQL 优化的价值就体现出来了&#xff01;因此稍微有些经验的同学都知道&#xff0c;怎么让 MySQL 查询语句又快又好是一件很重要的事情。要让 SQL…

桥梁监测是做什么的?桥梁结构监测方案

现代化大型桥梁是交通主干道的重要节点&#xff0c;对交通运输发展具有重大影响。然而&#xff0c;桥梁在长期使用过程中容易受到各种因素的影响&#xff0c;如自然灾害、车辆载荷、材料老化等&#xff0c;从而导致结构损伤和安全隐患。因此&#xff0c;对桥梁结构性能进行自动…

Vue3+Vite+Pinia+Naive后台管理系统搭建之八:构建 login.vue 登录页

前言 如果对 vue3 的语法不熟悉的&#xff0c;可以移步Vue3.0 基础入门&#xff0c;快速入门。 项目所需要的图片&#xff0c;icon图标&#xff08;推荐&#xff1a;阿里巴巴矢量图标库&#xff09;自行获取&#xff0c;命名一致就行。 1. 构建 src/components/CopyRight.vu…

猿人学第一届刷题18

1.第十八题 jsvmp - 猿人学 问题: 1.第一页请求正常能返回数据 2.第二页开始之后出现{"error": "Unexpected token/Validation failed"} 分析&#xff1a; 1.第二页开始&#xff0c;有带加密参数&#xff0c;直接重发请求无果&#xff0c;应该带了时间戳…