【c++刷题笔记-动态规划】day32: 509. 斐波那契数 、 70. 爬楼梯 、 746. 使用最小花费爬楼梯

509. 斐波那契数 - 力扣(LeetCode)

cpp 复制代码
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;i++){
            dp[i]=dp[i-1]+dp[i-2];
        }
        return dp[n];
    }
};

70. 爬楼梯 - 力扣(LeetCode)

cpp 复制代码
class Solution {
public:
    int climbStairs(int n) {
        if(n<=1){
            return 1;
        }
        vector<int>dp(n+1);
        dp[1]=1;
        dp[2]=2;
        for(int i=3;i<=n;i++){
            dp[i]=dp[i-1]+dp[i-2];
        }
        return dp[n];
    }
};

746. 使用最小花费爬楼梯 - 力扣(LeetCode)

cpp 复制代码
class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        int n=cost.size();
        vector<int>dp(n+1);
        dp[0]=0;
        dp[1]=0;
        for(int i=2;i<=n;i++){
            dp[i]+=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
        }
        return dp[n];
    }
};

总结

理解dp

数组的定义,它代表什么很重要。初始化,需要考虑清楚。递推公式需要理解

相关推荐
再卷也是菜5 分钟前
第一章、线性代数(2)高斯消元法
线性代数·算法
NAGNIP7 分钟前
一文搞懂CNN经典架构-EfficientNet!
算法·面试
如何原谅奋力过但无声10 分钟前
【chap11-动态规划(上 - 基础题目&背包问题)】用Python3刷《代码随想录》
数据结构·python·算法·动态规划
c++逐梦人31 分钟前
C++11——— 包装器
开发语言·c++
zzh08141 分钟前
Mysql数据库备份与恢复笔记
数据库·笔记·mysql
小宇的天下1 小时前
Calibre LVS Circuit Comparison(2)
算法·lvs
十年编程老舅1 小时前
Linux 多线程高并发编程:读写锁的核心原理与底层实现
linux·c++·linux内核·高并发·线程池·多线程·多进程
迈巴赫车主1 小时前
求最大公约数-欧几里得算法(辗转相除法)
算法·最大公约数
wildlily84271 小时前
C++ Primer 第5版章节题 第十三章(二)
开发语言·c++
lxl13071 小时前
C++算法(15)BFS_FloodFill
算法·宽度优先