题解 | #最小花费爬楼梯#

最小花费爬楼梯

http://www.nowcoder.com/practice/9b969a3ec20149e3b870b256ad40844e

思路:动态规划
dp[i]:爬到第i层的最小花费
每次可爬1或2阶,所以最小花费可分为两种情况:
  1. 从i-1阶爬上来,花费为:爬到i-1阶的最小花费 + 从第i-1阶爬要花的费用,即dp[i-1] + costs[i-1]
  2. 从i-2阶爬上来,花费为:爬到i-2阶的最小花费 + 从第i-2阶爬要花的费用,即dp[i-2] + costs[i-2]
由此可以爬到第i阶的花费为上述两者的最小值,故可确定推导公式为:dp[i] = min(dp[i-1] + costs[i-1], dp[i-2] + costs[i-2])
由于是计算最小花费,所以将dp数组初始化为最大值;
由推导公式可知,每次的状态值都由前两个状态值推导而来,故初始化dp[0] = 0, dp[1] = 0,因为可从第0阶或第一阶开始
 代码如下:
n = int(input())
costs = list(map(int, input().split()))
if n <= 1:
    print(0)
else:
    dp = [float('inf')] * (n+1)
    dp[0] = 0
    dp[1] = 0
    for i in range(2, n+1):
        dp[i] = min(dp[i-1]+costs[i-1], dp[i-2]+costs[i-2])
    print(dp[n])



全部评论

相关推荐

今年读完研的我无房无车无对象,月入还没有过万&nbsp;看到他在朋友圈晒房产证,感叹自己白读了这么多年书
梦想是成为七海千秋:那咋了,双9毕业的现在还没存款呢(因为没念完),高中毕业的去直播带货月入几百万也是完全有可能的,退一万步讲,有些人刚出生父母就给买车买房了,上哪说理去,哪怕是同一个起点也会有截然不同的走向,过好自己的生活就完事了。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
昨天 15:45
辽宁大学 golang
咱就是说&nbsp;你不主动&nbsp;我也不会主动下一步hhh,急死了
恶龙战士:不建议把这种帖子发到牛客上,建议去小红书发
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务