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

简介: 【学会动态规划】使用最小花费爬楼梯(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& cost) {
        int size = cost.size();
        // 创建dp表,这样初始化默认填充的是 0 
        vector 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];
    }
};


写在最后:

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


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


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


相关文章
|
网络协议
IDEA启动报端口占用
IDEA启动报端口占用
|
SQL 关系型数据库 MySQL
Presto【基础 01】简介+架构+数据源+数据模型+特点(一篇即可入门支持到PB字节的分布式SQL查询引擎Presto)
Presto【基础 01】简介+架构+数据源+数据模型+特点(一篇即可入门支持到PB字节的分布式SQL查询引擎Presto)
1365 0
|
关系型数据库 RDS SQL
数据库实例性能调优利器-Performance Insights最佳实践
作者: 风移 Performance Insights是什么 阿里云RDS Performance Insights是RDS CloudDBA产品一项专注于用户数据库实例性能调优、负载监控和关联分析的利器,以简单直观的方式帮助用户迅速评估数据库负载,资源等待的源头和对应SQL查询语句,以此来指导用户在何时、何处、采取何种行动进行数据性能优化。
5039 0
|
3天前
|
云安全 人工智能 算法
以“AI对抗AI”,阿里云验证码进入2.0时代
三层立体防护,用大模型打赢人机攻防战
1304 3
|
3天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
620 3
|
4天前
|
人工智能 Rust 运维
这个神器让你白嫖ClaudeOpus 4.5,Gemini 3!还能接Claude Code等任意平台
加我进AI讨论学习群,公众号右下角“联系方式”文末有老金的 开源知识库地址·全免费
|
10天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
735 5