当前位置: 首页 > news >正文

代码随想录算法训练营第三十二天 | 509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯

第三十二天打卡,动态规范第一天!今天比较简单,主要理解dp的概念


509.斐波那契数列

题目链接

解题过程

  • 状态转移方程 dp[i] = dp[i - 1] + dp[i - 2];

动态规划

class Solution {
public:int fib(int n) {if (n < 2) 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.爬楼梯

题目链接

解题过程

  • 第三层楼梯的状态可以由第二层楼梯和到第一层楼梯状态推导出来,即爬到第三层楼的方法数等于爬到第二层楼的方法数与爬到第一层楼的方法数之和

动态规划

class Solution {
public:int climbStairs(int n) {if (n <= 2) return n;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.back();}
};

746.使用最小花费爬楼梯

题目链接

解题过程

  • dp[i]的定义:到达第i台阶所花费的最少体力为dp[i]

  • dp[i - 1] 跳到 dp[i] 需要花费 dp[i - 1] + cost[i - 1]。

    dp[i - 2] 跳到 dp[i] 需要花费 dp[i - 2] + cost[i - 2]。

动态规划

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int len = cost.size();vector<int>dp(len + 1);dp[0] = 0;dp[1] = 0;for (int i = 2; i <= len; i++) {dp[i] = min(cost[i - 2] + dp[i - 2], cost[i - 1] + dp[i - 1]);}return dp.back();}
};
http://www.lryc.cn/news/440084.html

相关文章:

  • Oracle发送邮件功能:配置自动化发信指南?
  • 探索 InternLM 模型能力边界
  • Python 数学建模——Pearson/Spearman 相关系数
  • QUIC的loss detection学习
  • 【QT】使用QOpenGLWidget后,窗口全屏之后右键菜单出不来的问题
  • MySQL 8.0授权语法变更及解决方案‌
  • 2024 VMpro 虚拟机中如何给Ubuntu Linux操作系统配置联网
  • 详解Diffusion扩散模型:理论、架构与实现
  • 坐牢第三十八天(Qt)
  • (十五)、把自己的镜像推送到 DockerHub
  • 【云岚到家-即刻体检】-day07-2-项目介绍及准备
  • SpringCloud Alibaba之Nacos服务注册和配置中心
  • 面试官:讲一讲Spring MVC源码解析
  • 815. 公交路线(24.9.17)
  • Rust: Warp RESTful API 如何得到客户端IP?
  • 添加选择登录ssh终端
  • 【基于 Delphi 的人才管理系统】
  • GetMaterialApp组件的用法
  • ubuntu安装mysql 8.0忘记root初始密码,如何重新修改密码
  • Vue3项目开发——新闻发布管理系统(七)
  • ICMP
  • Unity-Transform类-旋转
  • 如何使用 Vue 3 的 Composition API
  • Mamba环境配置教程【自用】
  • 2021 年 6 月青少年软编等考 C 语言二级真题解析
  • 2024网络安全、应用软件系统开发决赛技术文件
  • CSP-J初赛每日题目2(答案)
  • 为什么Node.js不适合CPU密集型应用?
  • 数模原理精解【12】
  • steamdeck执行exe文件