leetcode 动态规划(基础版) 使用最小花费爬楼梯

题目:

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。

你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。

请你计算并返回达到楼梯顶部的最低花费。

题解:

本题开始真正使用动态规划的知识了,本人也是初次入门,只是即兴写下所学所感,在这过程中可能有出错的地方,欢迎大家一起讨论。

每一次爬楼梯不再像之前爬楼梯那样单纯递推就可求出,而是要在递推的基础上满足整体最优解。

每一次的更新策略是走到本层楼梯应该是从上一步和上两步中花费最少的走上来的。即:

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

cpp 复制代码
int minCostClimbingStairs(vector<int>& cost) {
        vector<int>dp(cost.size()+1,0);
        for(int i=2;i<=cost.size();i++){
            dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
        }
        return dp[cost.size()];
    }

写出这道题后让我心里对动态规划和贪心做了个对比,目前得出的结论是:

贪心:在实现每一层时,按一个策略从多个选法中选择最优的,通过局部最优达到整体最优。

动态规划:先把到本层的所有策略都做一遍,然后再从中选择最优的,通过小整体最优得到大整体最优解。

相关推荐
weixin_307779134 小时前
Redis Windows迁移方案与测试
c++·windows·redis·算法·系统架构
仪器科学与传感技术博士6 小时前
python:讲懂决策树,为理解随机森林算法做准备,以示例带学习,通俗易懂,容易理解和掌握
python·算法·决策树
小指纹6 小时前
cf--思维训练
c++·算法·macos·ios·objective-c·cocoa
小指纹6 小时前
河南萌新联赛2025第(四)场【补题】
数据结构·c++·算法·macos·objective-c·cocoa·图论
菜鸟555556 小时前
河南萌新联赛2025第四场-河南大学
c++·算法·思维·河南萌新联赛
F_D_Z7 小时前
【感知机】感知机(perceptron)模型与几何解释
学习·算法·支持向量机
竹子_237 小时前
《零基础入门AI:传统机器学习进阶(从拟合概念到K-Means算法)》
人工智能·算法·机器学习
设计师小聂!8 小时前
力扣热题100------136.只出现一次的数字
数据结构·算法·leetcode
崎岖Qiu8 小时前
leetcode643:子数组最大平均数 I(滑动窗口入门之定长滑动窗口)
java·算法·leetcode·力扣·双指针·滑动窗口
多思考少编码9 小时前
[GESP202309 四级] 2023年9月GESP C++四级上机题题解,附带讲解视频!
开发语言·c++·算法