C++解决最小花费爬楼梯问题(爬楼梯升级版)
2021/10/28 20:40:29
本文主要是介绍C++解决最小花费爬楼梯问题(爬楼梯升级版),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
C++解决最小花费爬楼梯问题(爬楼梯升级版)
问题描述
问题分析
这个题像极了0-1背包问题。实际上还是动态规划问题,从子问题来看,就是看走一步到达的阶梯所要求的体力花费和走两步到达的阶梯所要求的体力花费哪一个更小,总的来看就是看这些子问题的和哪个更小(0-1背包则是看哪个更大)。简单来说就是在这种可以分解成子问题的问题中,如果所有子问题都是最优解,那么这个问题的解就是最优的。理解了这个问题,代码就比较容易实现了。
问题解决(代码)
class Solution { public: int minCostClimbingStairs(vector<int> &cost) { int length = cost.size(); vector<int> sum(length);//创建存储总体力花费的数组 sum[0] = cost[0];//题目中说0/1为初始阶梯,单独列出 sum[1] = cost[1]; for (int i = 2; i < length; i++) {//sum[n]表示上到第n层台阶需要花费的总体力 sum[i] = min(sum[i - 1], sum[i - 2]) + cost[i];//递归,表示到达i层花费的总体力等于来这一层用的花费和之前在第(n-1)层花费的体力的和 } return min(sum[length - 1], sum[length - 2]); } };
因为这个题提交的时候并不是最优的方法,运行时间比较长,所以如果有更好的方法可以私信我,我们一起讨论。
这篇关于C++解决最小花费爬楼梯问题(爬楼梯升级版)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-04安装 VPrix Desktop 的系统要求-icode9专业技术文章分享
- 2024-05-01巧用 TiCDC Syncpoint 构建银行实时交易和准实时计算一体化架构
- 2024-05-01银行核心背后的落地工程体系丨Oracle - TiDB 数据迁移详解
- 2024-04-26高性能表格工具VTable总体构成-icode9专业技术文章分享
- 2024-04-16软路由代理问题, tg 无法代理问题-icode9专业技术文章分享
- 2024-04-16程序猿用什么锅-icode9专业技术文章分享
- 2024-04-16自建 NAS 的方案-icode9专业技术文章分享
- 2024-04-14ansible 在远程主机上执行脚本,并传入参数-icode9专业技术文章分享
- 2024-04-14ansible 在远程主机上执行脚本,并传入参数, 加上remote_src: yes 配置-icode9专业技术文章分享
- 2024-04-14ansible 检测远程主机的8080端口,如果关闭,则echo 进程已关闭-icode9专业技术文章分享