算法学习 | day33/60 斐波那契数列/爬楼梯/使用最小花费爬楼梯

news/2024/5/2 8:05:32

一、题目打卡

        1.1 斐波那契数列

        题目链接:. - 力扣(LeetCode)

// class Solution {
// public:
//     int fib(int n) {
//         if(n == 0) return 0;
//         vector<int> dp(n + 1);
//         dp[0] = 0;
//         dp[1] = 1;
//         for(int i = 2 ; i < n + 1;i++){
//             dp[i] = dp[i - 1] + dp[i - 2];
//         }
//         // for(auto& it : dp){
//         //     cout << it<<" ";
//         // }
//         return dp[n];
//     }
// };class Solution {
public:int fib(int n) {if(n == 0) return 0;int dp[2];dp[0] = 0;dp[1] = 1;while(n--){int tmp = dp[1];dp[1] = dp[1] + dp[0];dp[0] = tmp;}return dp[0];}
};

        题目本身把初始化和递推公式都给出了,所以题目不难,需要注意的是初始化的数值,还有索引和对应数列的处理,因为这样的输出方式,是加了一个前缀 0 的,所以最终遍历和最终返回的时候需要考虑到这一点,等于是步长要向后移动一个单位。

        1.2 爬楼梯(答案思路)

        题目链接:. - 力扣(LeetCode)

class Solution {
public:int climbStairs(int n) {if(n <= 2) return n;vector<int> dp(n + 1); // 这里我之前没有想到的一个是存储的是到这一层所存储的数量,一开始想的是步数的累加dp[0] = 0;dp[1] = 1;dp[2] = 2;for(int i = 3; i < n + 1;i++){dp[i] = dp[i - 1] + dp[i - 2];}return dp[n];}
};

         这个题目在自己定义状态变量的时候想错了,如果定义状态变量是积累的步数的话,这样其实是走不通的,因为还需要考虑每一步怎么走,但是多写几个会发现,其实这个累加的过程还是有规律的,比如说到 3 的方法,其实就是到 2 的方法总数加上到 1 的方法总数,因为这两个位置都只需要一步就走到 3 了,也就是说只需要在之前的方法中,尾部只会有一种选择,因而直接两者相加就可以了。

        1.3 使用最小花费爬楼梯

        题目链接:. - 力扣(LeetCode)

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {// if(cost.size() < 2) return 0;vector<int> dp(cost.size() + 1,0);// dp[0] = 0;// dp[1] = 0;for(int i = 2 ; i < cost.size() + 1; i++){// if(i == 7) cout << cost[i -1] << " " << cost[i-2] << " " << dp[i - 1] << " " << dp[i-2] <<endl;// if(i == 7) cout << min(cost[i - 1], cost[i - 2]) + min(dp[i-1],dp[i-2]) << endl;dp[i] = min(cost[i - 1] + dp[i - 1], dp[i - 2] + cost[i - 2]);// dp[i] = min(cost[i - 1], cost[i - 2]) + min(dp[i-1],dp[i-2]);}// for(auto& it: dp){//     cout << it << endl;// }return dp[cost.size()];}
};

        感觉有了前面题的思路,这个状态转移的方法不是很难理解,不过对我来说复杂一点的其实还是怎么去处理这个索引。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/11488.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

【教程】iOS如何抓取HTTP和HTTPS数据包经验分享

&#x1f4f1; 在日常的App开发和研发调研中&#xff0c;对各类App进行深入的研究分析时&#xff0c;我们需要借助专业的抓包应用来协助工作。本文将介绍如何使用iOS手机抓包工具来获取HTTP和HTTPS数据包&#xff0c;并推荐一款实用的抓包应用——克魔助手&#xff0c;希望能够…

基于深度学习的机场航拍小目标检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要&#xff1a;在本博客中介绍了基于YOLOv8/v7/v6/v5的机场航拍小目标检测系统。该系统的核心技术是采用YOLOv8&#xff0c;并整合了YOLOv7、YOLOv6、YOLOv5算法&#xff0c;从而进行性能指标的综合对比。我们详细介绍了国内外在机场航拍小目标检测领域的研究现状、数据集处理…

TCP网络协议栈和Posix网络部分API总结

文章目录 Posix网络部分API综述TCP协议栈通信过程TCP三次握手和四次挥手&#xff08;看下图&#xff09;三次握手常见问题&#xff1f;为什么是三次握手而不是两次&#xff1f;三次握手和哪些函数有关&#xff1f;TCP的生命周期是从什么时候开始的&#xff1f; 四次挥手通信状态…

离散数学【详解】-自学考试湖北,争取做到识字都能看懂。

回顾8年前&#xff0c;我记得我大学高数没复习&#xff0c;考了23分。 今天公司代码写完了&#xff0c;明天清明节&#xff0c;写篇文章磨磨时间。 我的文章&#xff0c;没有一篇不是磨时间能好好写出来的。 ----我 先列标题&#xff0c;比如h1,h2,这些内容。然后往里面填字&a…

【物联网项目】基于ESP8266的家庭灯光与火情智能监测系统——文末完整工程资料源码

目录 系统介绍 硬件配置 硬件连接图 系统分析与总体设计 系统硬件设计 ESP8266 WIFI开发板 人体红外传感器模块 光敏电阻传感器模块 火焰传感器模块 可燃气体传感器模块 温湿度传感器模块 OLED显示屏模块 系统软件设计 温湿度检测模块 报警模块 OLED显示模块 …

3.java openCV4.x 入门-数据类型(CvType)与Scalar

专栏简介 &#x1f492;个人主页 &#x1f4f0;专栏目录 点击上方查看更多内容 &#x1f4d6;心灵鸡汤&#x1f4d6;我们唯一拥有的就是今天&#xff0c;唯一能把握的也是今天 &#x1f9ed;文章导航&#x1f9ed; ⬆️ 2.hello openCV ⬇️ 4.待更新 数据类型&#xff…