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

题目:

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

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

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

题解:

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

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

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

dpi=min(dpi-1+costi-1,dpi-2+costi-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()];
    }

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

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

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

相关推荐
evans在进步16 分钟前
LeetCode 34:在排序数组中查找元素的首尾位置——Java 两次二分查找详解
java·python·leetcode
依然鸣1 小时前
PTA团体程序设计天梯赛L2真题讲解L2-001-004
经验分享·学习·算法·深度优先·pat考试
杨航 AI2 小时前
** AI 面试算法 50 题清单**,不是单纯的 LeetCode 题号列表,而是按照“**考察概率 × 面试价值 × 你当前准备方向**”排序
算法·leetcode·面试
m0_720245019 小时前
1543.统计好三元组(简单)
开发语言·算法
To_OC9 小时前
LC 560 和为 K 的子数组:前缀和配哈希表,这对组合我是真的服了
javascript·算法·程序员
hans汉斯10 小时前
《软件工程与应用》期刊推荐&10月版面征稿中
图像处理·人工智能·深度学习·算法·音视频·软件工程
叠层归一研究院10 小时前
AGI 系统(八):符号范畴嵌入函子 — SymCat ↪ C_M107 严格化
c语言·开发语言·人工智能·算法·transformer·agi
其美杰布-富贵-李11 小时前
08 进阶评估指标与算法特定指标
人工智能·算法
.道阻且长.12 小时前
5.LeetCode算法习题讲解--双指针--有效三角形的个数
算法·leetcode·职场和发展
我是海飞12 小时前
杰理JL703N SSD1306 OLED(128x64) 点阵屏移植说明
单片机·算法·嵌入式·音频·杰理