斐波那契数列模型----三步问题

面试题 08.01. 三步问题 - 力扣(LeetCode)

1、状态表示

题目要求:上到n阶台阶,有多少种方法。那么n逐渐简化,上1阶台阶有多少种方法;上2阶台阶有多少种方法……直到上n阶台阶有多少种方法。

那么,状态表示dp[i]:上n阶台阶有多少种方法。

2、状态转移方程

上1阶台阶:从地面到1,0-》1。1种方法,dp[1] = 1

上2阶台阶:从地面到2,0-》2;或者从1到2,0-》1-》2。2两种方法,dp[2] = 2

上3阶台阶:0-》3;或者0-》1-》3;或者0-》1-》2-》3;或者0-》2-》3。4种方法。dp[3] = 4

上4阶台阶:1-》4;2-》4,3-》4。那么从1-》4,就先需要上1阶台阶,1种方法;从2-》4,就先需要上2阶台阶,2种方法;从3-》4,就先需要上3阶台阶,4种方法。一共dp[4] = 7,dp[4] = dp[1] + dp[2] + dp[3]。

……

那么,要想走到第i阶台阶,就有三种情况:从i-1直接到i,从i-2直接到i,从i-3直接到i。

那么求走到第i阶台阶的方法dp[i],就应该先知道dp[i-1],dp[i-2],dp[i-3],那么dp[i] = dp[i-1] + dp[i-2] + dp[i-3]

3、初始化

由状态转移方程可知,至少需要初始化前三个状态。

那么,地面可认为dp[0],那么dp[0]应该如何初始化呢?其实这里初始化0或1都没有关系,因为o0或1都可以解释得通。

我这里就初始化为1了。因为从0-》3,是一种方法,那么dp[3] = dp[0] + dp[1] + dp[2],方便写代码。

4、遍历顺序

显然就是从左到右遍历。

5、返回值

那么就是dp[n]。

class Solution {
public:int waysToStep(int n) {//越界检查if(n == 1 || n == 0) return 1;if(n == 2) return 2;const int MOD = 1e9 + 7;vector<int> dp(n+1);//创建dp表dp[0] = dp[1] = 1,dp[2] = 2;//初始化for(int i = 3;i<=n;i++)//遍历顺序dp[i] = ((dp[i-1] + dp[i-2])%MOD + dp[i-3])%MOD;//状态转移return dp[n];}
};

同样这里也可以用滚动数组优化。

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

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

相关文章

代码随想录第45天|● 70. 爬楼梯 (进阶) ● 322. 零钱兑换 ● 279.完全平方数

文章目录 ● 70. 爬楼梯 &#xff08;进阶&#xff09;思路&#xff1a;- 排列 先value后weight代码&#xff1a; ● 322. 零钱兑换思路&#xff1a;代码 ● 279.完全平方数思路&#xff1a;代码 ● 70. 爬楼梯 &#xff08;进阶&#xff09; 思路&#xff1a;- 排列 先value后…

如何提升计算机性能

04 穿越功耗墙&#xff0c;我们该从哪些方面提升“性能”&#xff1f; 上一讲&#xff0c;在讲 CPU 的性能时&#xff0c;我们提到了这样一个公式&#xff1a; 程序的 CPU 执行时间 指令数CPIClock Cycle Time 这么来看&#xff0c;如果要提升计算机的性能&#xff0c;我们可以…

基于ZYNQ的PCIE高速数据采集卡的设计(一)

作为信息处理的第一步&#xff0c;数据采集的作用越来越重要。目前&#xff0c;数据采集已经在航 空、民用、军事、医疗等领域得到广泛应用。随着相关技术的不断发展&#xff0c;信号频率越 来高&#xff0c;带宽越来越大&#xff0c;使得数据采集技术逐渐向高速大数据的方向…

幻兽帕鲁专用服务器搭建之Linux部署配置教程

大家好我是飞飞&#xff0c;上一期我分享了Windows系统的幻兽帕鲁服务器搭建教程。因为幻兽帕鲁这游戏对服务器的配置有一定的要求&#xff0c;很多小伙伴就寻思用Linux系统搭建占用会不会小一点&#xff1f;有计算机基础的小伙伴都知道Linux系统和Windows系统相比&#xff0c;…

【Linux】实时查看服务器信息

查看服务器CPU使用率 使用命令mpstat 1。这里的1表示每隔1秒更新一次CPU使用率。如果系统未安装mpstat&#xff0c;可以通过安装sysstat包来获取它。 在基于Debian的系统&#xff08;如Ubuntu&#xff09;上&#xff0c;使用命令&#xff1a; sudo apt-get update sudo apt-…

考研复试类比社团招新,无所谓“公平”,导师选谁都是他的权力

这篇文章是抖音和b站上上传的同名视频的原文稿件&#xff0c;感兴趣的csdn用户可以关注我的抖音和b站账号&#xff08;GeekPower极客力量&#xff09;。同时这篇文章也为视频观众提供方便&#xff0c;可以更加冷静地分析和思考。文章同时在知乎发表。 我考研一战的时候计算机考…

【详识JAVA语言】面向对象程序三大特性之一:封装

封装的概念 面向对象程序三大特性&#xff1a;封装、继承、多态。而类和对象阶段&#xff0c;主要研究的就是封装特性。何为封装呢&#xff1f;简单来说 就是套壳屏蔽细节。 比如&#xff1a;对于电脑这样一个复杂的设备&#xff0c;提供给用户的就只是&#xff1a;开关机、通…

管理系统提升:列表页构成要素,拒绝千篇一律

大家伙&#xff0c;我是大千UI工场&#xff0c;专注UI知识案例分享和接单&#xff0c;本期带来B端系统列表页的分享&#xff0c;欢迎大家关注、互动交流。 一、什么是列表页 管理系统列表页是指管理系统中用于展示和管理数据的页面&#xff0c;通常以表格或列表的形式呈现。列…

23端口登录的Telnet命令+传输协议FTP命令

一、23端口登录的Telnet命令 Telnet是传输控制协议/互联网协议&#xff08;TCP/IP&#xff09;网络&#xff08;如Internet&#xff09;的登录和仿真程序&#xff0c;主要用于Internet会话。基本功能是允许用户登录进入远程主机程序。 常用的Telnet命令 Telnet命令的格式为&…

有人吐槽:可视化大屏面向领导的设计,真相是这样吗?

某些老铁的态度很极端&#xff0c;看到可视化大屏页面就一口断定&#xff0c;除了讨好领导之外&#xff0c;屁用没有。真相是这样吗&#xff1f;贝格前端工场尝试给老铁们分析下。 一、可视化大屏确实要面向领导&#xff0c;但不是讨好领导 可视化大屏的设计需要考虑领导和管理…

整理的一些脑模板及节点的名称

整理的一些脑模板及节点的名称 前言模板简介AAL90模板HOA112 模板 前言 自己看论文找的&#xff0c;因为有些数据集网站的确有点难找到模板的名称等等。所以主要是看一些论文&#xff0c;因为有文献&#xff0c;所以更有保障一些。当然也有一些在数据网站上比较容易找到所以一…

小兴教你做平衡小车-stm32程序开发(按键扫描)

文章目录 1 单片机最小系统板按键原理图介绍2 库函数程序设计3 寄存器程序设计4 效果展示 1 单片机最小系统板按键原理图介绍 从图中看出单片机的PB12引脚接到了按键上。 根据按键的原理图&#xff0c;可以分析得到&#xff0c;如果不按下按键的时候&#xff0c;引脚输入的是…

适配华为“纯血鸿蒙”,抖音开始招聘相关人才

目前&#xff0c;字节跳动上线了“大前端高级开发工程师”一职&#xff0c;开始招聘鸿蒙人才。 根据职位描述&#xff0c;该岗位负责抖音大前端基础工程与架构设计&#xff0c;以及抖音大前端基础设施建设。 该职位需要有前端工程化经验&#xff0c;熟悉JavaScript/TypeScrip…

斐波那契数列模型---使用最小花费爬楼梯

746. 使用最小花费爬楼梯 - 力扣&#xff08;LeetCode&#xff09; 1、状态表示&#xff1a; 题目意思即&#xff1a;cost[i]代表从第i层向上爬1阶或者2阶&#xff0c;需要花费多少力气。如cost[0]&#xff0c;代表从第0阶爬到第1阶或者第2阶需要cost[0]的力气。 一共有cost.…

C++_数据类型_字符串型

作用 用于表示一串字符 两种风格 C风格字符串&#xff1a;char 变量名[] "字符串值” 示例 注意 C风格的字符串要用双括号括起来 C风格字符串&#xff1a;string 变量名 "字符串值” 注意 用C风格字符串的时候&#xff0c;要包含这个头文件#include <st…

【比较mybatis、lazy、sqltoy、lambda、操作数据 】操作批量新增、分页查询【一】

orm框架使用Lambda性能比较 环境&#xff1a; idea jdk17 spring boot 3.0.7 mysql 8.0测试条件常规对象 orm 框架是否支持xml是否支持 Lambda对比版本mybatis☑️☑️3.5.4sqltoy☑️☑️5.2.98lazy✖️☑️1.2.3-JDK17 数据库表(含有唯一性索引s_u) CREATE TABLE sys_u…

吴恩达机器学习-可选实验室-梯度下降-Gradient Descent for Linear Regression

文章目录 目标工具问题陈述计算损失梯度下降总结执行梯度下降梯度下降法成本与梯度下降的迭代预测绘制祝贺 目标 在本实验中&#xff0c;你将:使用梯度下降自动化优化w和b的过程 工具 在本实验中&#xff0c;我们将使用: NumPy&#xff0c;一个流行的科学计算库Matplotlib&…

【茶话数据结构】查找最短路径——Dijkstra算法详解(保姆式详细图解,步步紧逼,保你学会)

&#x1f4af; 博客内容&#xff1a;【茶话数据结构】查找最短路径——Dijkstra算法详解 &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f989;所属专栏&#xff1a;数据结构笔记 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准前端&#xff0c;专注基础和实…

【python】遵守 robots.txt 规则的数据爬虫程序

程序1 编写一个遵守 robots.txt 规则的数据爬虫程序涉及到多个步骤&#xff0c;包括请求网页、解析 robots.txt 文件、扫描网页内容、存储数据以及处理异常。由于编程语言众多&#xff0c;且每种语言编写爬虫程序的方式可能有所不同&#xff0c;以下将使用 Python 语言举例&am…