动态规划

这个题目,刚开始题目还有点没看懂,后面看评论题解才慢慢懂的。

[1,100,1,1,1,90,1,1,80,1]

这个数组一共有十个数,对应的下标是0到9,根据题目的意思,我们可以从下标为0和1的位置开始,数组里面的数字1,100,1,1对应的是爬所对应的代价。

很明显,我们要从下标为0的位置开始爬,爬两阶,爬到下标为2的位置;再爬两阶,爬到下标为4的位置;再爬两阶,爬到下标为6的位置;再爬1阶,爬到下标为7的位置;再爬2阶,爬到下标为9的位置

最后再爬1阶,就爬到终点了

这样总共花费为6

解题思路就是典型的动态规划,不过我C++代码不太懂

在C++中,vector<int> dp(cost.size( )+1,0); 这行代码定义了一个整数类型的向量dp,并用两个参数来初始化它:cost.size()+1:这指定了dp的大小。cost是一个已经存在的向量,它的size()方法返回它包含的元素数量。通过加我们为dp创建了一个比cost多一个元素的空间。0:这是用于初始化dp中所有元素的默认值。

因此,dp的所有元素都将被初始化为0。

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

cost[i]就是数组里面的值。

这应该是最简单的动态规划了吧

#和牛牛一起刷题打卡#
算法题打卡 文章被收录于专栏

坚持打卡,每天至少一题,虽然一点都不喜欢呜呜呜

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务