动态规划——斐波那契数列模型:1137.第N个泰波那契数

文章目录

  • 题目描述
  • 算法原理
    • 1.状态表示(最重要的)
      • 什么是状态表示?
      • 状态表示怎么来的呢?
      • 本题的状态表示
    • 2.状态转移方程(最难的)
      • 本题的状态转移方程
    • 3.初始化(后三步完成剩下百分之一的细节问题)
      • 本题的初始化
    • 4.填表顺序
      • 本题的填表顺序
    • 5.返回值
      • 本题返回值
  • 代码实现
  • 空间优化

题目描述

题目链接:1137.第N个泰波那契数
在这里插入图片描述

算法原理

如果我们采用动态规划的思想来解决这道问题的话,我们的过程一般是分五步来解决的:

1.状态表示(最重要的)

什么是状态表示?

首先我们要先确定一个状态表示。那第一次接触动态规划的同学可能就有些疑问了,什么是状态表示呢?通俗的来讲就是,我们会先定义一个dp表,这个dp表可能是一维数组或者二维数组,简单举例一下:
在这里插入图片描述
我们做动态规划的流程就是搞一个dp表,然后把他填满,其中一个值可能就是我们的答案,状态表示指的就是dp表中的某个值它所代表的含义(感性理解)。如果我们去直接去百度动态规划的状态表示是什么的话,会出现一堆概念性的专有名词,要是没一两周根本搞不懂,而且会很痛苦,很容易放弃,所以刚开始学的时候我们有一个感性的认知就可以了。
在这里插入图片描述

状态表示怎么来的呢?

(PS:很多教学视频上来就给一个状态表示,而不说明状态表示怎么来的,那后续的步骤则显得毫无意义)

  1. 题目要求
  2. 经验(一两百道题)+题目要求
  3. 分析问题的过程中,发现重复子问题(表示动态规划的方式)

第三个看起来也有点抽象,但问题不大,前期跟紧我的节奏,先理解前两步,慢慢的等我们动态规划学的熟练了就会进而引出第三种了。当然也会有其它的,但我这个系列只会涉及这三个。

本题的状态表示

dp[i]:表示第i个泰波那契数的值

2.状态转移方程(最难的)

dp[i]等于什么,状态转移方程就是什么。所以我们要想尽一切办法来让之前的状态或者之后的状态来表示dp[i]。

本题的状态转移方程

题目非常贴心,已经给出:dp[i]=dp[i-1]+dp[i-2]+dp[i-3]

3.初始化(后三步完成剩下百分之一的细节问题)

根据状态转移方程来填表,保证填表的时候不越界
在这里插入图片描述

本题的初始化

dp[0]=0,dp[1]=1,dp[2]=1

4.填表顺序

为了填写状态的时候,所需要的状态已经计算过了。

本题的填表顺序

从左向右

5.返回值

题目要求+状态表示

本题返回值

dp[n]

代码实现

class Solution {
public:int tribonacci(int n) {//时间复杂度和空间复杂度都为O(N)//处理一些越界情况if(n <= 1)return n;else if(n == 2)return 1;//1.状态表示vector<int> dp(n + 1);//2.初始化dp[0] = 0,dp[1] = 1,dp[2] = 1;//3.填表顺序for(int i = 3;i <= n;i++){dp[i] = dp[i - 3] + dp[i - 2] + dp[i - 1];}//返回值return dp[n];}
};

空间优化

在这里插入图片描述
每次滚动则之前的数可以舍去。

class Solution {
public:int tribonacci(int n) {//滚动数组空间优化——空间复杂度从O(N)变为O(1)//处理一些边界情况if(n <= 1)return n;else if(n == 2)return 1;//初始化int a = 0,b = 1,c = 1,x = 0;//填表顺序for(int i = 3;i <= n;i++){x = a + b + c;a = b;b = c;c = x;}//返回值return x;}
};

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

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

相关文章

怎样下载微博视频而不至于发生“403 Forbidden“现象?

近段时间不知道从什么时候开始&#xff0c;微博视频都不让从网页下载了。以前是看到有想要下载的微博视频&#xff0c;就点进去微博详情页用谷歌浏览器F12进入调试的方式&#xff0c;选“Network”->“Media”->重新F5刷新页面等待调试框里出现链接->在链接上鼠标右键…

MyBatis环境的搭建

1.创建 Maven 工程 打开idea新建一个项目File → Project Structure → Project&#xff0c;build system中选择maven &#xff08;1&#xff09;由于 IDEA 中集成了 Maven&#xff0c;所以我们就不需要下载了&#xff0c;直接使用 IDEA 默认的 Maven 进行项目构建。 &#…

笔记本电脑如何安装openwrt

环境&#xff1a; 联想E14笔记本 装机U盘 DiskImage v1.6 刷写工具 immortalwrt镜像 问题描述&#xff1a; 笔记本电脑如何安装openwrt 解决方案&#xff1a; 一、官方版 1.官网下载固件 2.BIOS关闭安全启动改为引导 3.用U盘启动进入PE系统后&#xff0c;需要先用PE系…

数据结构(七):树介绍及面试常考算法

一、树介绍 1、定义 树形结构是一种层级式的数据结构&#xff0c;由顶点&#xff08;节点&#xff09;和连接它们的边组成。 树类似于图&#xff0c;但区分树和图的重要特征是树中不存在环路。树有以下特点&#xff1a; &#xff08;1&#xff09;每个节点有零个或多个子节点…

三种好用的在线色彩提取工具

#三种好用的在线色彩提取工具 1.ecjson网站 网址: https://www.ecjson.com/image_color#b1cfea 或点击链接&#xff1a; ecjson在线色彩提取 图1 ecjson网站色彩提取举例 2.微查网 网址&#xff1a;http://zxqsq.wiicha.com/ 或点击链接&#xff1a; 微查网在线色彩提取 …

企业微信旧版-新版网络连接错误,无法登录的解决方案

一.企业微微信无法登录故障 二.解决方案 1.网上的解决方案 **检查网络连接&#xff1a;**确保你的计算机正常连接到互联网。尝试打开其他网页&#xff0c;以确保网络连接正常。 **防火墙和安全软件&#xff1a;**某些防火墙或安全软件可能会阻止企业微信的正常连接。请确保你…

【Axure RP9】的详细安装及Axure入门应用

目录 一 Axure入门安装 1.1 Axure是什么? 1.2 Axure应用场景 1.3 Axure安装 1.3.1 汉化 1.3.2 授权 二, Axure应用 1.1 Axure软件界面概述 1.2 Axure的应用 1.2.1备份 1.2.2 视图显示及网格设置 1.2.3 生成HTML文件 1.2.4 备注说明 一 Axure入门安装 1.1 Axure…

使用blip2进行图片输入文本输出

多模态的重要模型blip2,官方提供模型可以直接用来图片生成文本 github地址&#xff1a;https://github.com/salesforce/LAVIS/tree/main/projects/blip2 个人相当于跑了一下blip2的demo&#xff0c;记录下过程&#xff0c;供今后需要参考&#xff1a; 1、首先是环境安装&#…

Tableau快速入门-下载安装加载数据与仪表盘构建

官网介绍 官网连接如下&#xff1a; https://www.tableau.com/zh-cn tableau的产品包括如下&#xff1a; 参考:https://zhuanlan.zhihu.com/p/341882097 Tableau是功能强大、灵活且安全些很高的端到端的数据分析平台&#xff0c;它提供了从数据准备、连接、分析、协作到查阅…

[论文阅读]Multimodal Virtual Point 3D Detection

Multimodal Virtual Point 3D Detection 多模态虚拟点3D检测 论文网址&#xff1a;MVP 论文代码&#xff1a;MVP 论文简读 方法MVP方法的核心思想是将RGB图像中的2D检测结果转换为虚拟的3D点&#xff0c;并将这些虚拟点与原始的Lidar点云合并。具体步骤如下&#xff1a; (1)…

PHP基础 - 循环与条件语句

循环语句 1)for循环: 重复执行一个代码块指定的次数。 for ($i = 0; $i < 5; $i++) { // 初始化 $i 为 0,每次循环后将 $i 值增加 1,当 $i 小于 5 时执行循环echo "The number is: $i \n"; // 输出当前 $i 的值并换行 }// 循环输出结果为: // The number …

云上丝绸之路| 云轴科技ZStack成功实践精选(西北)

古有“丝绸之路” 今有丝绸之路经济带 丝路焕发新生&#xff0c;数智助力经济 云轴科技ZStack用“云”护航千行百业 沿丝绸之路&#xff0c;领略西北数字化。 古丝绸之路起点-陕西 集历史与现代交融&#xff0c;不仅拥有悠久的历史文化积淀&#xff0c;而且现代化、数字化发…