Leetcode刷题详解——三步问题

news2024/9/22 21:12:20

1. 题目链接:面试题 08.01. 三步问题

2. 题目描述:

三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。

示例1:

 输入:n = 3 
 输出:4
 说明: 有四种走法

示例2:

 输入:n = 5
 输出:13

提示:

  1. n范围在[1, 1000000]之间

3. 算法(动态规划)

3.1 算法思路:

  1. 状态表示

    这道题可以根据【经验+题目要求】直接定义出状态表示:

    dp[i]表示:达到i位置时,一共多少种方法

  2. 状态转移方程

    dp[i]表示小孩上第i阶楼梯的所有方式,那么它应该等于所有上一步的方式之和:

    上一步上一级台阶,dp[i]+=dp[i-1];

    上一步上两级台阶,dp[i]+=dp[i-2];

    上一步上三级台阶,dp[i]+=dp[i-3];

    综上所述,dp[i]=dp[i-1]+dp[i-2]+dp[i-3];

  3. 初始化

    dp[i]i=0,i=1,i=2的时候没有办法进行推导的,因此我们在填表之前,将1,2,3位置的值初始化

    dp[i]=1,dp[2]=2,dp[3]=4

  4. 填表顺序

    从左往右

  5. 返回值

    应该返回dp[n]的值

    请添加图片描述

3.2 C++算法思路:

class Solution {
    const int MOD=1e9+7;
public:
    int waysToStep(int n) {
        if(n==1||n==2) return n;
        if(n==3) return 4;
        //创建dp表
        vector<int>dp(n+1);
        //初始化
        dp[1]=1,dp[2]=2,dp[3]=4;
        //填表
        for(int i=4;i<=n;i++)
            dp[i]=((dp[i-1]+dp[i-2])%MOD+dp[i-3])%MOD;
        //返回结果
        return dp[n];
    }
};

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

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

相关文章

AD 过滤器

应用场景&#xff1a; 只想选择某一层的内容只选择布线只选择焊盘… 因此&#xff0c;有时候AD选中不了对象&#xff0c;也有可能是过滤器打开过滤掉了。

TFN 2.5G SDH传输分析仪 FT100-D300S

今天给大家带来一款TFN 2.5G SDH传输分析仪--TFN FT100-D300S. D300S SDH测试模块&#xff0c;是FT100智能网络测试平台产品家族的一部分&#xff0c;是一个坚固耐用、锂电池超长供电的传统PDH/SDH测试解决方案&#xff0c;支持2.5Gbps到2.048Mbps速率的传输链路测试。支持在线…

MA网络下,静态路由仅配出接口,不配下一跳是否可行

在MA网络模式下&#xff0c;静态路由只配置出接口&#xff0c;不配置下一跳地址是否可行 如下拓扑图&#xff1a; 如图所示&#xff0c;在R1上配置一条去往4.4.4.4的静态路由&#xff0c;此时如果静态路由只配置出接口&#xff0c;不配置下一跳地址&#xff1a; ip route-stat…

为什么 MySQL 选择 Repeatable Read 作为默认隔离级别

为什么 MySQL 选择 Repeatable Read 作为默认隔离级别&#xff1f; 我们知道&#xff0c;ANSI/ISO SQL-92 标准定义了 4 种隔离级别&#xff0c;从低到高依次为&#xff1a; 读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Reads)、序列化(Serial…

如何使用grequests库

grequests是一个基于gevent的异步HTTP请求库&#xff0c;它允许同时发送多个HTTP请求并异步处理响应。以下是使用grequests库的基本步骤&#xff1a; 安装grequests库&#xff1a;可以使用pip命令在命令行中安装grequests库。 pip install grequests 导入grequests模块&#x…

实时电商数据采集API接口的分析和应用【附代码实例可加参数测试】

互联网的发展改变了我们的生活方式&#xff0c;也改变了企业商家们的营销方式&#xff0c;越来越多的企业商家把产品营销从线下转到线上&#xff0c;选择在线商城、移动APP、微信公众号等互联网工具进行营销活动。而随着营销模式的多元化和电子支付渠道的进一步发展&#xff0c…

通讯网关软件032——利用CommGate X2OPC实现OPC客户端访问Modbus TCP设备

本文介绍利用CommGate X2OPC实现OPC客户端连接Modbus TCP设备。CommGate X2OPC是宁波科安网信开发的网关软件&#xff0c;软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示&#xff0c;SCADA系统上位机、PLC、设备具备Modbus TCP通讯接口&#xff…

使用 systemctl 管理 MySQL 服务

文章目录 前言1. 安装 MySQL1.1 下载安装包1.2 下载自动化脚本1.3 安装 MySQL 2. 配置 systemd2.1 配置含义介绍2.2 配置 systemd2.3 管理 MySQL 服务 前言 systemd 是 Linux 系统推出的初始化&#xff08;init&#xff09;系统&#xff0c;MySQL 使用 RPM 或者 Debian 包安装…

修改目录权限

CentOS8的目录结构&#xff1b; 虚拟机的克隆&#xff1b; 深克隆&#xff1b;完整克隆&#xff1b;浅克隆&#xff1b;终端命令格式及颜色&#xff1b;/etc/bashrc修改主机名&#xff1b;/etc/hostname linux内核版本号: JDK的版本号&#xff1b; JDK版本号分析&#xff1b; …

030.Python面向对象_类补充_只读属性

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

Android NDK开发详解之调试和性能分析的通过Android Studio调试

Android NDK开发详解之调试和性能分析的通过Android Studio调试 启用调试功能在设备上启用调试功能。运行可调试的 build 变体。 更改调试程序类型AutoJavaNative&#xff08;仅适用于 C/C 代码&#xff09;设备支持 run-as。设备启用了 ptrace。 Dual&#xff08;仅适用于 C/C…

电脑录像功能在哪?一文帮你轻松破解

“电脑录像功能在哪里呀&#xff1f;最近因工作上的原因&#xff0c;需要使用电脑来录像&#xff0c;但是找了一上午都找不到在哪里&#xff0c;眼看已经快没时间了&#xff0c;现在真的很急&#xff0c;希望大家帮帮我。” 电脑已经成为了人们生活和工作中必不可少的工具&…

YB4606最大2A电流的可编程过压保护开关IC

概述&#xff1a; YB4606的前端是过电压和过电压电流保护装置。它实现了宽输入电压范围从2.5Voc到40Voc。过电压阈值可以外部编程或设置为内部默认设置。的超低电阻集成电源路径nFET开关确保更好电池充电系统应用性能。它可以提供高达2A的电流&#xff0c;以满足电池供应系统。…

TypeScript之函数以及与JavaScript函数的区别

一、是什么 函数是JavaScript 应用程序的基础&#xff0c;帮助我们实现抽象层、模拟类、信息隐藏和模块 在TypeScript 里&#xff0c;虽然已经支持类、命名空间和模块&#xff0c;但函数仍然是主要定义行为的方式&#xff0c;TypeScript 为 JavaScript 函数添加了额外的功能&…

3.9每日一题(三角函数线性组合求不定积分的特殊方法和一般方法)

方法一&#xff1a;通过特殊方法&#xff1a;加项减项拆凑微分 方法二&#xff1a;用三角函数线性组合不定积分的公式&#xff08;一般方法&#xff09;&#xff1a;

LeetCode字符串题库 之 罗马数字转整数

题目链接&#x1f517;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 1. 题目分析 我们在做题的时候&#xff0c;一定要知道题目的目的是什么&#xff0c;我们可以结合测试用例和提示来看。 我们可以分析以下几点&#xff1a; 1. 每一个罗马数字都…

sql server数据库跟踪——SQL Server Profiler解析

工具&#xff1a; SQL Server Profiler这个工具是SQL Server数据库自带的语句执行跟踪工具&#xff0c;常使用于分析软件修改数据库时所执行的语句&#xff0c;适合用来研究软件运行数据库的原理。 打开方式&#xff1a; 本机安装了SQL server的话&#xff0c;都是自带的。直接…

MySQL中,当update修改数据与原数据相同时会再次执行吗?

一、背景 本文主要测试MySQL执行update语句时&#xff0c;针对与原数据&#xff08;即未修改&#xff09;相同的update语句会在MySQL内部重新执行吗&#xff1f; 二、测试环境 MySQL5.7.25 Centos 7.4 三、binlog_format为ROW 1、参数 2、测试步骤 session1 session2 ses…

优优嗨聚集团:绝味鸭脖市值上升,餐饮业迎来新变革

导语&#xff1a;绝味鸭脖作为中国餐饮行业的领军企业&#xff0c;其市值上升不仅体现了企业的市场价值&#xff0c;更对整个餐饮行业产生了深远的影响。本文将探讨绝味鸭脖市值上升对餐饮行业的影响&#xff0c;以及未来餐饮行业的发展趋势。 一、绝味鸭脖市值上升&#xff0c…