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

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

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

  • 理论基础
  • 自己看到题目的第一想法
  • 看完代码随想录之后的想法

链接: 509. 斐波那契数
链接: 70. 爬楼梯
链接: 746. 使用最小花费爬楼梯

理论基础

五部曲:
1.确定dp数组(dp table)以及下标的含义
2.确定递推公式
3.dp数组如何初始化
4.确定遍历顺序
5.举例推导dp数组

自己看到题目的第一想法

509.斐波那契数:直接看题解。
70.爬楼梯:
746.使用最小花费爬楼梯:

看完代码随想录之后的想法

509.斐波那契数:
五部曲上秤!
(1)确定dp数组以及下标的含义:dp[i]的定义为:第i个数的斐波那契数值是dp[i]
(2)确定递推公式:直接有递推公式:状态转移方程dp[i]=dp[i-1]+dp[i-2]
(3)dp数组如何初始化:dp数组的初始化题目给了,dp[0]=0,dp[1]=1
(4)确定遍历顺序:从递归公式可以看出,dp[i]依赖dp[i-1]和dp[i-2],那么遍历顺序应当先确定前面的数再确定后面的数,所以是从前到后遍历。
(5)举例推导dp数组:根据递推公式推导举例,如果发现结果不对,就把dp数组打印出来看看推导的数列是否一致。
代码还是很简单的,可以使用
70.爬楼梯:
五部曲上秤!
(1)确定dp数组以及下标的含义:dp[i]的定义为:爬到第i层楼,有dp[i]种方法
(2)递推公式:dp[i]有两个方向可以推出来,dp[i-1]和dp[i-2],这里理解是一个难点,为什么可以这样推导,因为只能走1步或者2步,而没有其他方法上一步到这一步。所以dp[i]=dp[i-1]+dp[i-2]。
(3)dp数组如何初始化:dp[1]=1,dp[2]=2
(4)确定遍历顺序:从前向后遍历
(5)举例推导:如果代码有问题就把dp数组打印出来看与自己的举例是否一样。
746.使用最小花费爬楼梯:
五部曲上秤!
(1)确定dp数组以及下标的含义:dp[i]的定义为到位置i所需要的花费是多少。
(2)递推公式:有两个途径得到dp[i],一个是dp[i-1],一个是dp[i-2],有一个难想的点就是,究竟是从dp[i-1]跳还是从dp[i-2]跳呢?根据题意是需要最小的,那么就是dp[i]=min[dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])。
(3)如何初始化:dp[0]=0, dp[1]=0
(4)遍历顺序:从前向后遍历
(5)举例推导

http://www.lryc.cn/news/358790.html

相关文章:

  • 变现实谈,我要的不是灵光一现,而是真实的实现!——感悟篇
  • Matlab操作Excel筛选指定数据的对应数据
  • 对于C++STL及其时间复杂度的总结
  • Docker搭建FRP内网穿透服务器
  • 【NumPy】掌握NumPy的divide函数:执行高效的数组除法操作
  • 您的虚拟机未能继续运行,原因是遇到一个可纠正的错误。请保留挂起状态并纠正错误,或放弃挂起状态。
  • FPGA DMA IP核使用指南
  • 【博客20】缤果Matlab串口调试助手V1.0(中级篇)
  • 南京威雅学校:2024年度大戏《Tinkerbell(小叮当)》震撼落幕
  • Kotlin 函数
  • 动态路由协议实验——RIP
  • 数据结构 | 二叉树(基本概念、性质、遍历、C代码实现)
  • 很多Oracle中的SQL语句在EF中写不出来
  • 浏览器打开PHP文件弹出下载而不是运行代码
  • 安卓自定义UI组件开发流程
  • 【LINUX】LINUX基础(目录结构、基本权限、基本命令)
  • Aigtek功率放大器的主要性能要求有哪些
  • 2024.5.29晚训参考代码
  • 【计算机网络】——概述(图文并茂)
  • C语言多个源程序编译的CMakeList文件编写/源程序生成动态库
  • C# list集合
  • ****三次握手和四次挥手
  • 开发语言Java+前端框架Vue+后端框架SpringBoot开发的ADR药物不良反应监测系统源码 系统有哪些优势?
  • 问题排查|记录一次基于mymuduo库开发的服务器错误排查(段错误--Segmentation fault (core dumped))
  • Mysql常用操作DQL数据库、表操作:
  • 标题:Go语言中的YAML魔法:轻松配置你的环境
  • STM32高级控制定时器之输入捕获模式
  • 使用 Vue 3 和 qrcode.js 开发二维码显示组件
  • LabVIEW异步编程概述
  • 【数据库】MySQL表的操作