代码随想录二刷 day38 | 动态规划之 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

day38

      • 509. 斐波那契数
        • 1 确定dp数组以及下标的含义
        • 2 确定递推公式
        • 3 dp数组如何初始化
        • 4 确定遍历顺序
        • 5 举例推导dp数组
      • 70. 爬楼梯
        • 1 确定dp数组以及下标的含义
        • 2 确定递推公式
        • 3 dp数组如何初始化
        • 4 确定遍历顺序
        • 5 举例推导dp数组
      • 746. 使用最小花费爬楼梯
        • 1 确定dp数组以及下标的含义
        • 2 确定递推公式
        • 3 dp数组如何初始化
        • 4 确定遍历顺序
        • 5 举例推导dp数组

509. 斐波那契数

题目链接
解题思路:动规五部曲

1 确定dp数组以及下标的含义

dp[i]的定义为:第i个数的斐波那契数值是dp[i]

2 确定递推公式

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

3 dp数组如何初始化

题目中把如何初始化也直接给我们了,如下:

dp[0] = 0;
dp[1] = 1;

4 确定遍历顺序

从递归公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出,dp[i]是依赖 dp[i - 1]dp[i - 2],那么遍历的顺序一定是从前到后遍历的

5 举例推导dp数组

按照这个递推公式dp[i] = dp[i - 1] + dp[i - 2],我们来推导一下,当N为10的时候,dp数组应该是如下的数列:

0 1 1 2 3 5 8 13 21 34 55

代码如下:

class Solution {
public:int fib(int N) {if( N <= 1) return N;vector<int> dp(N + 1); //定义一个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. 爬楼梯

题目链接

1 确定dp数组以及下标的含义

dp[i]: 爬到第i层楼梯,有dp[i]种方法

2 确定递推公式

dp[i] = dp[i - 1] + dp[i - 2] 

3 dp数组如何初始化

dp[1] =1;dp[2] = 2;

4 确定遍历顺序

dp[i] = dp[i - 1] + dp[i - 2];中可以看出,遍历顺序一定是从前向后遍历的

5 举例推导dp数组

当n为5的时候,dp table(dp数组)应该是这样的
在这里插入图片描述
代码如下:

class Solution {
public://和斐波那契数列一样int climbStairs(int n) {if (n <= 1) 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[n];}
};

746. 使用最小花费爬楼梯

题目链接
解题思路:

1 确定dp数组以及下标的含义

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

2 确定递推公式

dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);

3 dp数组如何初始化

dp[0] = 0,dp[1] = 0;

4 确定遍历顺序

从前往后

5 举例推导dp数组

拿示例2:cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1] ,来模拟一下dp数组的状态变化,如下:
在这里插入图片描述
代码如下:

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {vector<int> dp(cost.size() + 1);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()];}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/8112.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索Gradio库中的Image模块及其强大功能

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

jvm运行时数据区

一、jdk、jre、jvm的关系 jvm只是把class字节码文件翻译成机器识别的二进制数据&#xff0c;不同的操作系统生成的操作系统指令又会不一样jre除了包含jvm外&#xff0c;还提供了很多类库&#xff08;java.io、java.swing等包下类库&#xff09;提供工具&#xff0c;比如javac&a…

MongoDB【MongoDB命令、CRUD操作 】(二)-全面详解(学习总结---从入门到深化)

目录 MongoDB命令 CRUD操作 MongoDB命令 基本操作 查看数据库 show dbs; 切换数据库 如果没有对应的数据库则创建 use 数据库名;创建集合 db.createCollection("集合名") 查看集合 show tables; show collections; 删除集合 db.集合名.drop(); 删除当前…

基于matlab使用深度学习的语义分割算法实现(附源码)

一、前言 此示例演示如何使用语义分割网络对图像进行分割。 语义分割网络对图像中的每个像素进行分类&#xff0c;从而生成按类分割的图像。语义分割的应用包括自动驾驶的道路分割和医疗诊断的癌细胞分割。 此示例首先向您展示如何使用预训练的 Deeplab v3 [1] 网络分割图像&am…

看一眼Mysql查询语句

目录 &#x1f6fb; 查询数据 &#x1f6fb;基本查询语句 &#x1f6fb;单表查询 &#x1f695;查询所有字段 &#x1f695;查询指定字段 &#x1f695;查询指定记录 &#x1f695;带in关键字的查询 &#x1f695;带between and的范围查询 &#x1f695;带like的字符匹…

NIO-Selector 网络编程

目录 一、阻塞 & 非阻塞 1、阻塞 2、非阻塞 二、selector 1、连接和读取 2、处理客户端断开 3、处理消息的边界 4、ByteBuffer大小分配 三、多线程优化 四、NIO vs BIO 1、stream vs channnel 2、IO模型 阻塞IO 非阻塞IO 多路复用 异步IO模型 一、阻塞 &am…

虚拟现实(VR)在医疗保健中的5种应用

医疗保健中的VR虚拟现实 虚拟现实的由来已久&#xff0c;18世纪&#xff0c;法国的医生使用布制的分娩模拟器向助产师和外科医生教授医学技术。在20世纪60年代初&#xff0c;医生一边对心肺复苏学员口述心肺复苏的技巧&#xff0c;一边使用一家塑料玩具厂家制造的塑料娃娃现场…

K8s 为什么要弃用 Docker

K8s 为什么要弃用 Docker 最近在学习容器技术的过程中&#xff0c;看到有关于Kubernetes“弃用 Docker”的事情&#xff0c;担心现在学 Docker 是否还有价值&#xff0c;是否现在就应该切换到 containerd 或者是其他 runtime。 随着深入了解&#xff0c;这些疑虑的确是有些道理…

Unreal 5 实现丧尸伤害和死亡

这一篇主要是实现玩家攻击丧尸可以造成伤害和自身血量为零时&#xff0c;丧尸可以死亡。丧尸也可以对玩家造成伤害&#xff0c;有攻击范围的判定。 这一篇的功能实现有四个功能&#xff1a; 丧尸被攻击掉血丧尸死亡处理玩家被攻击掉血玩家死亡处理 丧尸被攻击掉血 子弹的修改…

【C++】异常

文章目录 1. C语言传统的处理错误的方式2. C异常概念用法异常的抛出和匹配原则规则1情况2抛出异常位置最近的验证对象类型匹配的验证 规则3规则4 异常的重新抛出异常规范 1. C语言传统的处理错误的方式 错误处理机制&#xff1a; 1.终止程序 如&#xff1a;assert 断言终止 &a…

TX Text Control .NET for WPF 31.SP3 Crack

.NET WPF 应用程序的文档处理 将文档编辑、创建和 PDF 生成添加到您的 WPF 应用程序中。 视窗用户界面 功能齐全的文档编辑器 TX Text Control 是一款免版税、完全可编程的丰富编辑控件&#xff0c;它在专为 Visual Studio 设计的可重用组件中为开发人员提供了广泛的文字处理功…

[每日一水] Latex Tikz foreach 循环嵌套

\documentclass{article} \usepackage{tikz} \begin{document} \begin{tikzpicture} \foreach[count\i] \x in {20,18,...,2}\foreach[count\j] \y in {20,18,...,2}\node at (\i,\j) {\x \y}; \end{tikzpicture} \end{document}\node at (\i,\j) {\x \y}; 就是写文本的意思