LeetCode746最小花费爬楼梯(动态规划)
发布时间
阅读量:
阅读量
原理
- 问题分析与状态定义 * 题目提供了一个数组
cost,用于表示每一阶楼梯所需的花费,每次可以选择向上攀登 1 阶或 2 阶楼梯,目标是计算抵达楼梯顶部所需的最小总花费。设定状态dp[i]表示抵达第i阶楼梯所需的最低成本。- 由于可以从第
i - 1阶跨出一步或者从第i - 2阶跨出两步到达第i阶,因此抵达该阶的最小花费需比较两种情形:一种是抵达前一阶(即i - 1阶)的最小花费加上该阶本身的费用cost[i - 1];另一种是抵达前两阶(即i - 2阶)的最小花费加上该阶本身的费用cost[i - 2]。通过比较这两种情况得出的较小值,即可确定状态转移方程。
- 由于可以从第
- 边界条件确定 * 对于第一阶楼梯(即第 0 阶),初始状态下认为无需任何花费即可到达,因此将
dp[0] = 0设定为初始值。- 第二阶楼梯(即第 1 阶)同样可以直接从起点抵达,所需花费也为零,故有
dp[1] = 0。上述两个边界条件为后续动态规划过程提供了必要的初始参考值。
- 第二阶楼梯(即第 1 阶)同样可以直接从起点抵达,所需花费也为零,故有
步骤
- 动态规划数组初始化 * 构建一个长度为
cost.size() + 1的vector类型数组dp,其作用是记录抵达每一级台阶所需的最
全部评论 (0)
还没有任何评论哟~
