欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 每天一道算法题【蓝桥杯】【使用最小花费爬楼梯】

每天一道算法题【蓝桥杯】【使用最小花费爬楼梯】

2025/3/12 0:16:28 来源:https://blog.csdn.net/2402_83910930/article/details/146129747  浏览:    关键词:每天一道算法题【蓝桥杯】【使用最小花费爬楼梯】

题目

思路

动态规划

状态表示

dp[i] 表示从第i个台阶开始跳跳到台阶顶使用的最小花费

状态转移方程

前一个台阶的最小花费要看后两个台阶来决定
dp[i]为后两个台阶花费的最小值加上这个台阶的花费
dp[i] = min(dp[i + 1], dp[i + 2]) + cost[i]

初始化

dp[n - 1] = cost[n - 1];//第n-1个台阶跳到台阶顶的最小花费为cost[i-1]
dp[n - 2] = cost[n - 2];//第n-2个台阶跳到台阶顶的最小花费为cost[i-2]

注意返回值

return min(dp[0], dp[1]);//第一次跳可以选择跳到第一个台阶或第二个台阶
}

#define _CRT_SECURE_NO_WARNINGS 1
#include<bits.h>
#include<vector>
using namespace std;
class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();vector<int>dp(n);dp[n - 1] = cost[n - 1];//第n-1个台阶跳到台阶顶的最小花费为cost[i-1]dp[n - 2] = cost[n - 2];//第n-2个台阶跳到台阶顶的最小花费为cost[i-2]for (int i = n - 3; i >= 0; i--){dp[i] = min(dp[i + 1], dp[i + 2]) + cost[i];//前一个台阶的最小花费要看后两个台阶来决定//写出状态转移方程}return min(dp[0], dp[1]);//第一次跳可以选择跳到第一个台阶或第二个台阶}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词