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

ops/2024/10/24 21:52:50/

1. 第 N 个泰波那契数

题目链接:

1137. 第 N 个泰波那契数 - 力扣(LeetCode)icon-default.png?t=O83Ahttps://leetcode.cn/problems/n-th-tribonacci-number/

Tn+3 = Tn + Tn+1 + Tn+2 可以转换为 Tn = Tn-3 + Tn-2 + Tn-1

 

由上图可以看出T3等于T0+T1+T2,T4=T1+T2+T3以此类推后面的数 


 

2. 算法原理 

1. 状态表示:dp表里的值所代表的含义

    

本题状态表式是:第i个泰波那契数的值(先根据画的图来看(第i个,最后返回值按照题目的要求来))

 

 2.状态转移方程

   

本题的状态转移方程 就是 dp[i]等于什么  :dp[i] = dp[i-1] + dp[i-2] + dp[i-3]

 

 3. 初始化:把dp表填满不越界

  

如何填表:就是根据前面的状态转移方程来进行填表

  

比如:如果我们想要填dp[4]的值,那么我们只需要知道前面3个dp的值再相加就行了

不越界就是:如果我们想要填dp[0]的值,那么我们就需要dp[0]前3个dp的值相加,那么就会造成越界访问的问题,还有题目的数据范围

 

 本题的初始化就是:dp[0] = 0 ; dp[1] = dp[2] = 1 ;

4. 填表顺序 

本题的填表顺序是:从左到右

5. 返回值 :题目要求 + 状态表示 

本题的返回值是:直接返回dp[n]


3. 代码

动态规划的固定四步骤:1.  创建一个dp表

                                        2. 在填表之前初始化

                                        3. 填表(填表方法:状态转移方程)

                                        4. 确定返回值

 

class Solution {
public:int tribonacci(int n) {//先处理一下边界问题if(n==0) return 0;if(n==1 || n==2) return 1;vector<int>dp(n+1);dp[0]=0;dp[1]=dp[2]=1;//前三个题目已经初始化好了,从dp[3]开始初始化for(int i=3;i<=n;i++)dp[i] = dp[i-1] + dp[i-2] + dp[i-3];return dp[n];}
};

 


感谢观看~


http://www.ppmy.cn/ops/128162.html

相关文章

CDF时延趋势图

CDF&#xff08;Cumulative Distribution Function&#xff0c;累积分布函数&#xff09;时延趋势图是用于表示数据包时延分布情况的图形&#xff0c;常用于网络性能分析。它展示了特定时间内&#xff0c;数据包的时延达到某一值的概率&#xff0c;帮助理解时延的分布特征。 C…

特斯拉Optimus:展望智能生活新篇章

近日&#xff0c;特斯拉举办了 "WE ROBOT" 发布会&#xff0c;发布会上描绘的未来社会愿景&#xff0c;让无数人为之向往。在这场吸引全球无数媒体的直播中&#xff0c;特斯拉 Optimus 人形机器人一出场就吸引了所有观众的关注。从多家媒体现场拍摄的视频可以看出来&…

跨时钟域处理(单bit)_2024年10月21日

慢时钟域同步到快时钟域&#xff1a;打两拍 在快时钟域clk下对慢时钟域信号进行打两拍&#xff08;亚稳态概率很低&#xff09; 脉冲宽度改变&#xff0c;但不影响同步结果 快时钟域同步到慢时钟域&#xff08;两种方法&#xff09; ① 脉冲展宽同步 在快时钟域clk下对快时…

ECharts饼图-饼图纹理,附视频讲解与代码下载

引言&#xff1a; 在数据可视化的世界里&#xff0c;ECharts凭借其丰富的图表类型和强大的配置能力&#xff0c;成为了众多开发者的首选。今天&#xff0c;我将带大家一起实现一个饼图图表&#xff0c;通过该图表我们可以直观地展示和分析数据。此外&#xff0c;我还将提供详…

在vue中,编写一个li标签同时使用v-for和v-if,谁的优先级更高

在 Vue 中&#xff0c;v-if 和 v-for 是两个常用的指令&#xff0c;但它们的优先级不同。当二者一起使用时&#xff0c;v-for 的优先级高于 v-if。这意味着&#xff0c;v-for 会先执行&#xff0c;即使列表中的某些元素不满足 v-if 条件&#xff0c;它们仍会被遍历和渲染。 由…

使用 PyTorch 构建 LSTM 股票价格预测模型

目录 引言准备工作1. 训练模型&#xff08;train.py&#xff09;2. 模型定义&#xff08;model.py&#xff09;3. 测试模型和可视化&#xff08;test.py&#xff09;使用说明模型调整结论 引言 在金融领域&#xff0c;股票价格预测是一个重要且具有挑战性的任务。随着深度学习…

使用 Git 命令将本地项目上传到 GitLab

步骤详解 1. 在 GitLab 上创建一个新项目 登录你的 GitLab 账号。点击“New project”创建一个新的空项目。为项目设置名称、描述等信息。 2. 关联远程 Git 仓库 1.初始化本地 Git 仓库 git init 2.关联远程仓库&#xff1a; git remote add origin https://gitlab-lizz…

在Debian 11/Debian 10上安装MySQL 5.7

本文借鉴 如何在 Debian 11/Debian 10 上安装 MySQL 5.7 |https://cn.linux-console.net/?p20728 下载安装存储库 安装 根据提示选择mysql5.7即可(会车键选择) wget https://dev.mysql.com/get/mysql-apt-config_0.8.16-1_all.debsudo dpkg -i mysql-apt-config_0.8.16-1_a…