【代码随想录算法训练营——Day32】动态规划——509.斐波那契数、70.爬楼梯、746.使用最小花费爬楼梯

LeetCode题目链接

https://leetcode.cn/problems/fibonacci-number/description/

https://leetcode.cn/problems/climbing-stairs/

https://leetcode.cn/problems/min-cost-climbing-stairs/description/

题解

509.斐波那契数

简单就过了。

70.爬楼梯

本题的初始化和递推公式遇到了一些难题,都是AI帮我反应出来的。

746.使用最小花费爬楼梯

写的挺惊险的,一开始dp数组定大小时仗了AI的帮助,定义大小为cost.size()+1,其实是结果还需要一位来存。

代码

cpp 复制代码
//509.斐波那契数
#include <iostream>
#include <vector>
using namespace std;

class Solution {
public:
    int fib(int n) {
        vector<int> dp(n + 1, 0);
        if (n == 0) return 0;
        dp[0] = 0;
        dp[1] = 1;
        for (int i = 2;i <= n;i++)
            dp[i] = dp[i - 1] + dp[i - 2];
        return dp[n];
    }
};

int main() {
    int n1 = 2, n2 = 3, n3 = 4, n5 = 1;
    Solution s;
    printf("%d", s.fib(n5));
    return 0;
}
cpp 复制代码
//70.爬楼梯
#include <iostream>
#include <vector>
using namespace std;

class Solution {
public:
    int climbStairs(int n) {
        vector<int> dp(n + 1, 0);
        dp[0] = 1;
		dp[1] = 1;
        for (int i = 2;i <= n;i++) {
			dp[i] = dp[i - 1] + dp[i - 2];
        }
        return dp[n];
    }
};

int main() {
    int n1 = 2, n2 = 3;
    Solution s;
    printf("%d", s.climbStairs(n2));
    return 0;
}
cpp 复制代码
//746.使用最小花费爬楼梯
#include <iostream>
#include <vector>
using namespace std;

class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        vector<int> dp(cost.size() + 1, 0);
        dp[0] = cost[0];
        dp[1] = cost[1];
        for (int i = 2;i <= cost.size();i++) {
            if (i != cost.size())
                dp[i] = min(dp[i - 1], dp[i - 2]) + cost[i];
            else
                dp[i] = min(dp[i - 1], dp[i - 2]);
        }
        return dp[cost.size()];
    }
};

int main() {
    vector<int> cost1 = { 10,15,20 }, cost2 = { 1,100,1,1,1,100,1,1,100,1 };
    Solution s;
    printf("%d", s.minCostClimbingStairs(cost2));
    return 0;
}
相关推荐
txinyu的博客2 分钟前
map和unordered_map的性能对比
开发语言·数据结构·c++·算法·哈希算法·散列表
搞笑症患者16 分钟前
压缩感知(Compressed Sensing, CS)
算法·最小二乘法·压缩感知·正交匹配追踪omp·迭代阈值it算法
im_AMBER20 分钟前
Leetcode 101 对链表进行插入排序
数据结构·笔记·学习·算法·leetcode·排序算法
快手技术38 分钟前
AAAI 2026|全面发力!快手斩获 3 篇 Oral,12 篇论文入选!
前端·后端·算法
颜酱40 分钟前
前端算法必备:滑动窗口从入门到很熟练(最长/最短/计数三大类型)
前端·后端·算法
做科研的周师兄41 分钟前
【MATLAB 实战】栅格数据 K-Means 聚类(分块处理版)—— 解决大数据内存溢出、运行卡顿问题
人工智能·算法·机器学习·matlab·kmeans·聚类
X在敲AI代码42 分钟前
leetcodeD3
数据结构·算法
踩坑记录43 分钟前
leetcode hot100 560.和为 K 的子数组 medium 前缀和 + 哈希表
leetcode
码农小韩1 小时前
基于Linux的C++学习——循环
linux·c语言·开发语言·c++·算法
CoderCodingNo1 小时前
【GESP】C++五级/四级练习(双指针/数学) luogu-P1147 连续自然数和
开发语言·c++·算法