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

动态规划(1. 第 N 个泰波那契数)

题目链接:第 N 个泰波那契数

解法(动态规划):

算法流程:
  • 1.状态表示:

怎么来?

======   题目经验     经验+题目要求     分析问题的过程中发现重复子问题    ========

这道题可以「根据题⽬的要求」直接定义出状态表示:dp[i] 表示:第 i 个泰波那契数的值。

  • 2. 状态转移方程:

=======    dp[i]等于什么      =============

题目已经非常贴心的告诉我们了: dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3]

  • 3. 初始化:

=======      保证填表不越界      =============

从我们的递推公式可以看出, dp[i] i = 0 以及 i = 1 的时候是没有办法进⾏推导的,因为 dp[-2] dp[-1] 不是⼀个有效的数据。因此我们需要在填表之前,将 0, 1, 2 位置的值初始化。题⽬中已经告诉我们 dp[0] = 0, dp[1] = dp[2] = 1 。

  • 4. 填表顺序:

===========       填写当前状态时,所需状态已经填过了     ============

毫⽆疑问是「从左往右」。

  • 5. 返回值:

=========         题目要求+状态表示         ============

应该返回 dp[n] 的值。

代码:

C++

java:

空间优化:

由于现在主要学习使用动态规划,因此只是在这里提一下空间优化,后面三四十道题都不会讲,到后面背包问题再讲。

这里使用滚动数组进行优化

能使空间复杂度 

代码:

C++:

java:

相关文章:

  • 【prompt实战】知乎问题解答专家
  • Mac java全栈开发环境配置
  • 【Linux】在VMWare中安装Ubuntu操作系统(2025最新_Ubuntu 24.04.2)#VMware安装Ubuntu实战分享#
  • SSL 配置
  • Token登录授权、续期和主动终止的方案(Redis+Token(非jwtToken))
  • 用小程序制作好看的手机壁纸或者海报:Canva可画
  • 【面试题集合】
  • 【3-12 toupper(ch) tolower(ch) 和ASCII码 和全排列】
  • Android Retrofit 框架适配器模块深入源码分析(五)
  • Vmware Ubuntu 22.04 连接移动硬盘
  • 成为超人 21:超人怎么学?技能的学习,如编程
  • 【从零开始学习计算机科学】编译原理(五)语法制导翻译
  • grunt构建工具:scss转css
  • JavaWeb-servlet6中request和response的使用
  • 第J2周:ResNet50V2算法实现01(Tensorflow硬编码版)
  • ubuntu2404 安装 过程中 手动设置网络
  • 《深度剖析:鸿蒙系统下智能NPC与游戏剧情的深度融合》
  • 今天六大热点爆料
  • Redis 数据结构详解
  • 设计模式-结构型模式-装饰器模式
  • 马上评|这种“维权”已经不算薅羊毛,涉嫌犯罪了
  • 美国明尼苏达州发生山火,过火面积超80平方公里
  • 李强会见巴西总统卢拉
  • “一码难求”的Manus开放注册但价格不菲,智能体距离“实用”还有多远
  • 中央结算公司:减免境外央行类机构账户开户费用
  • 回望乡土:对媒介化社会的反思