算法训练营day41

动态规划理论基础(主要就是确定动态规划的几个步骤)

题目1:509. 斐波那契数 - 力扣(LeetCode)

复制代码
class Solution {
public:
    int fib(int n) {
        if(n == 0) return 0;
        if(n == 1) return 1;
        int dp1 = 0;
        int dp2 = 1;
        int dp3 = 0;
        for(int i = 2;i <= n;i++) {
            dp3 = dp1 + dp2;
            dp1 = dp2;
            dp2 = dp3;
        }
        return dp3;
    }
};

题目2:70. 爬楼梯 - 力扣(LeetCode)

复制代码
class Solution {
public:
    int climbStairs(int n) {
        if(n == 1) return 1;
        if(n == 2) return 2;
        int dp1 = 1;
        int dp2 = 2;
        int dp3 = 0;
        for(int i = 3;i <= n;i++) {
            dp3 = dp1 + dp2;
            dp1 = dp2;
            dp2 = dp3;
        }
        return dp3;
    }
};

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

复制代码
class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        vector<int> dp(cost.size() + 1);
        if(cost.size() == 1) return cost[0];
        dp[0] = 0;
        dp[1] = 0;
        for(int i = 2;i <= cost.size();i++) {
            dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
        }
        return dp[cost.size()];
    }
};
相关推荐
potato_may17 分钟前
链式二叉树 —— 用指针构建的树形世界
c语言·数据结构·算法·链表·二叉树
java修仙传43 分钟前
每日一题,力扣560. 和为 K 的子数组
算法·leetcode
ada7_1 小时前
LeetCode(python)——148.排序链表
python·算法·leetcode·链表
点云SLAM1 小时前
点云配准算法之-Voxelized GICP(VGICP)算法
算法·机器人·gpu·slam·点云配准·vgicp算法·gicp算法
资深web全栈开发3 小时前
LeetCode 3625. 统计梯形的数目 II
算法·leetcode·组合数学
橘颂TA3 小时前
【剑斩OFFER】算法的暴力美学——外观数列
算法·leetcode·职场和发展·结构与算法
Liangwei Lin3 小时前
洛谷 P1434 [SHOI2002] 滑雪
算法
c#上位机3 小时前
halcon图像增强之自动灰度拉伸
图像处理·算法·c#·halcon·图像增强
rit84324993 小时前
压缩感知信号恢复算法:OMP与CoSaMP对比分析
数据库·人工智能·算法
Pluchon4 小时前
硅基计划4.0 算法 FloodFill算法
java·算法·leetcode·决策树·逻辑回归·深度优先·图搜索算法