算法刷题day28|动态规划:509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

dp套路

  1. 确定dp数组(dp table)以及下标的含义
  2. 确定递推公式
  3. dp数组如何初始化
  4. 确定遍历顺序
  5. 举例推导dp数组

509. 斐波那契数

cpp 复制代码
class Solution {
public:
    int fib(int n) {
        if (n <= 1) return n;
        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. 爬楼梯

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

746. 使用最小花费爬楼梯

cpp 复制代码
class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        int dp[cost.size() + 1];
        dp[0] = dp[1] = 0;
        for (int i = 2; i <= cost.size(); i++){
            dp[i] = min(cost[i - 1] + dp[i - 1], cost[i - 2] + dp[i - 2]);
        }
        return dp[cost.size()];
    }
};
相关推荐
重生之我在VS写bug2 小时前
【C++知识总结2】C++里面的小配角cout和cin
数据结构·c++·算法
HUT_Tyne2652 小时前
力扣--LCR 141.训练计划III
算法·leetcode·职场和发展
pzn25063 小时前
蓝桥杯练习题
c++·算法·蓝桥杯
奶茶戒断高手4 小时前
【CSP CCF记录】201903-2第16次认证 二十四点
数据结构·c++·算法
xxxmmc4 小时前
Leetcode 290 word Pattern
算法·leetcode·hashmap双映射
羽墨灵丘4 小时前
0-1背包问题(1):贪心算法
算法·贪心算法
vampire-wpre6 小时前
我要成为算法高手-递归篇
算法·深度优先
醒了就刷牙7 小时前
Leetcode 面试150题 88.合并两个有序数组 简单
算法·leetcode·面试
丶Darling.7 小时前
Day47 | 动态规划 :线性DP 最长公共子序列&&最长公共子数组
算法·动态规划
丶Darling.8 小时前
Day48 | 动态规划 :线性DP 编辑距离
算法·动态规划