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

【代码随想录】day38

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、 动态规划理论基础
  • 二、 509斐波那契数
  • 三、70爬楼梯
  • 四、746使用最小花费爬楼梯


一、 动态规划理论基础

  • 背包问题
  • 打家劫舍
  • 股票问题
  • 子序列问题

动态规划问题分步:

  1. dp数组及下标的含义;
  2. 递推公式;
  3. dp数组如何初始化
  4. 遍历顺序
  5. 打印dp数组

二、 509斐波那契数

(状态压缩版,只保留当前数的前两位就行)

class Solution {
public:int fib(int n) {if (n < 2) {return n;}int a = 0, b = 1;for (int i = 0; i < n - 2; i ++) {int temp = a;a = b;b += temp;}return a + b;}
};

按动规五部曲写:
1.dp数组的含义:dp[i]表示第i个斐波那契数
2.递推公式:f(n) = f(n-1) + f(n-2)
3.dp数组初始化:dp[0] = 0,dp[1] = 1
4.遍历顺序:从前向后

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

三、70爬楼梯

可以用斐波那契是因为:一次可以迈一阶或者两阶,所以在第n阶的时候,不是从n-1就是n-2来的。

class Solution {
public:int climbStairs(int n) {int a = 0, b = 1;for (int i = 0; i < n - 1; i ++) {int temp = a;a = b;b += temp;}return a + b;}
};

动规五部曲:

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

四、746使用最小花费爬楼梯

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

相关文章:

  • 基于SpringBoot+Vue+Mysql的图书管理系统
  • 3.10 Python数据类型转换
  • ubuntu sudo时候LD_LIBRARY_PATH设置问题
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • Spring声明式事务(Spring学习笔记十三)
  • 腾讯云故障,该如何规避?
  • 前台往后台传值,null到后台变成了undefined ,NaN到了后台变成了null
  • IMBoy缓存系统深度解析:为何选择depcache而非ETS或Redis
  • 基于单片机数码管20V电压表仿真设计
  • LeetCode-热题100:152. 乘积最大子数组
  • 自动驾驶中的传感器融合算法:卡尔曼滤波器和扩展卡尔曼滤波器
  • 无人机飞行知识
  • Vue的模块化开发初探
  • 十四款大型语言模型在《街头霸王III》中一决雌雄
  • Gradle系列(五)-常用的gradle命令
  • 【5+】跨webview多页面 触发事件(二)
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • Angular4 模板式表单用法以及验证
  • express.js的介绍及使用
  • JAVA SE 6 GC调优笔记
  • MySQL几个简单SQL的优化
  • mysql外键的使用
  • Spark RDD学习: aggregate函数
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (五)MySQL的备份及恢复
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .apk文件,IIS不支持下载解决
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .Net转前端开发-启航篇,如何定制博客园主题
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @Autowired和@Resource的区别
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @Responsebody与@RequestBody
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [AHK V2]鼠标悬停展开窗口,鼠标离开折叠窗口
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [C++提高编程](三):STL初识
  • [HITCON 2017]SSRFme perl语言的 GET open file 造成rce
  • [Kubernetes]9. K8s ingress讲解借助ingress配置http,https访问k8s集群应用
  • [Linux]进程间通信(进程间通信介绍 | 匿名管道 | 命名管道)
  • [moka同学笔记]yii表单dropdownlist样式
  • [python] dict类型变量写在文件中
  • [Python进阶] 消息框、弹窗:pywin32
  • [unity]切换天空盒
  • [编程题]抄送列表 - 牛客网题解