动态规划-使用最小花费爬楼梯为例

news/2024/7/3 3:38:31

动态规划-使用最小花费爬楼梯为例

题目描述数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。
每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。
请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。

确定dp数组以及下标含义

观察cost数组理解题干,cost[i]是爬上第i个数要花费的体力,每次爬到i,必须从i-1,或者i-2爬上来,新建dp数组

int[] dp = new int[cost.length+1];

确定递推公式

观察发现,让dp[i]对应爬上cost[i-1]花费的体力

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

dp数组初始化

每个dp[i]由之前的dp[i-1]和dp[i-2]比较而来

dp[0]=0;
dp[1]=0;

确定遍历顺序

从下标2开始,依次遍历

完整代码

public int minCostClimbingStairs(int[] cost) {
        int length = cost.length;
        int[] dp = new int[cost.length+1];
        dp[0]= 0;
        dp[1]= 0;
        for(int i=2;i<=cost.length;++i){
            dp[i]=Math.min(dp[i-2]+cost[i-2],dp[i-1]+cost[i-1]);
        }
        return dp[length];
    }

http://www.niftyadmin.cn/n/3369348.html

相关文章

组合博弈知识汇总(算法)

原帖地址&#xff1a;http://www.wutianqi.com/?p1081以下是我从网上收集的关于组合博弈的资料汇总&#xff1a; 有一种很有意思的游戏&#xff0c;就是有物体若干堆&#xff0c;可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干&#xff0c;规定最后取光物体者取…

Carla与Ros联合仿真教学与踩坑经历

Carla与Ros联合仿真教学与踩坑经历 前言 本人需要用到carla进行仿真&#xff0c;做实验&#xff0c;研究了这个平台几个月。 需要注意的是&#xff0c;本人没有保留所有的ros包&#xff0c;而是选择一些进行使用&#xff0c;其他大家可以进行扩展。 carla0.9.5版本和carla0.…

力扣-跳跃游戏Ⅱ

给你一个非负整数数组 nums &#xff0c;你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 假设你总是可以到达数组的最后一个位置。 public int jump(int[] nums) {int length nu…

八大排序——归并排序

归并排序&#xff08;Merge sort&#xff09; 定义 归并排序时建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。 作为一种典型的分而治之思想的算法应用&#xff0c;归并排序的实现有两种方法&#xff1a; 自上而下的递归&#xff08;所有…

WINCE驱动程序编写者指南(转载)

WINCE驱动程序编写者指南在CE中&#xff0c;最简单的一个驱动程序莫过于一个内置&#xff08;Built-in&#xff09;设备的流接口驱动。对于一个不支持热拔插的设备&#xff0c;最快捷的方法就是为其实现一个内置的流接口的驱动。对于这样一类驱动程序&#xff0c;我们只需要按一…

vs 2008调试DLL的方法(转载)

对DLL的调试是一个热门话题&#xff0c;上网搜索了一下&#xff0c;发现很多相关的信息&#xff0c;但几乎全部是没有进行验证的摘抄&#xff0c;很鄙视这种行为。所以我在浏览的一些国外的网站后&#xff0c;结合自己的经验写下我在vs 2008编译平台上调试DLL的方法。按照我描述…

jdk1.8 中 ArrayList扩容部分源码

2019独角兽企业重金招聘Python工程师标准>>> ArrayList 作为Java常用的一种数据结构&#xff0c;是基于数组实现的&#xff0c;是一个动态数组&#xff0c;其容量能自动增长。 ArrayList动态扩容的全过程。如果通过无参构造的话&#xff0c;初始数组容量为0&#xf…

ASP.NET CORE下运行CMD命令

ASP.NET CORE下运行CMD命令&#xff0c;用以前的ASP.NET 的命令System.Diagnostics.Process.Start("notepad");这样是可以运行出记事本的&#xff0c; 现在公司的C大神开发了个EXE&#xff0c;需要放在服务器上&#xff0c;然后当访问服务器上的某个网页的时候就执行…