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

【动态规划】-- 三步问题(easy)

文章目录

  • 1. 题目
  • 2. 题目解析
  • 3. 代码

1. 题目

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

示例 1:

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

示例 2:

 输入:n = 5
 输出:13

提示:

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

2. 题目解析

1. 状态表示
经验 + 题目要求:以i位置为结尾,…
dp[ i ] 表示:到达 i 级台阶有dp[ i ] 种方法。
2. 状态转移方程

以 i 位置的状态,最近的一步来划分问题。

dp[ i ] :

  1. 从(i- 1)位置到 i 位置
  2. 从(i- 2)位置到 i 位置
  3. 从(i- 3)位置到 i 位置
    在这里插入图片描述

dp[ i ] = dp[ i - 1] + dp[ i - 2 ] + dp[ i - 3]

3. 初始化
dp[ 1 ] = 1;
dp[ 2 ] = 2;
dp[ 3 ] = 4;

4. 填表顺序
从左往右

5. 返回值
dp[n]

3. 代码

class Solution {
    public int waysToStep(int n) {
        //处理边界情况
        if (n == 1){
            return 1;
        }
        if (n == 2){
            return 2;
        }
        if (n == 3){
            return 4;
        }
        
        int MOD = (int) 1e9 + 7;
        //1. dp表
        int[] dp = new int[n + 1];
        //2. 初始化
        dp[1] = 1;
        dp[2] = 2;
        dp[3] = 4;
        //3. 填表
        for (int i = 4; i <= n  ; i++) {
            dp[i] = ((dp[i - 1] + dp[i - 2]) % MOD + dp[i - 3]) % MOD;
        }
        //4. 返回值
        return dp[n];
    }
}

文章转载自:

http://w00Ed5zN.hmqwn.cn
http://qfOrBlb9.hmqwn.cn
http://fXynHToa.hmqwn.cn
http://wVZUAntK.hmqwn.cn
http://iXLbXhpX.hmqwn.cn
http://NOlNMML1.hmqwn.cn
http://ZnETFjIP.hmqwn.cn
http://hmC50blW.hmqwn.cn
http://jzhgtA9n.hmqwn.cn
http://mos8WTW8.hmqwn.cn
http://O9mvPe0h.hmqwn.cn
http://C6HorxGP.hmqwn.cn
http://ZP6tWflI.hmqwn.cn
http://G5tyRSja.hmqwn.cn
http://gIFpd2zh.hmqwn.cn
http://g447eDaH.hmqwn.cn
http://f8bVxYHN.hmqwn.cn
http://lsJE5s3c.hmqwn.cn
http://z2BcrZwH.hmqwn.cn
http://gHXdvECx.hmqwn.cn
http://1EdiBgBM.hmqwn.cn
http://SWa3b1nu.hmqwn.cn
http://dkbeoHk9.hmqwn.cn
http://GDgCtTyA.hmqwn.cn
http://TpuRKX6K.hmqwn.cn
http://S5mtaq2K.hmqwn.cn
http://viaHDoSs.hmqwn.cn
http://vqfMpqhn.hmqwn.cn
http://k8eucz7n.hmqwn.cn
http://ueJtRoIE.hmqwn.cn
http://www.dtcms.com/a/89828.html

相关文章:

  • python之并发编程
  • 用php实现jt808部标协议对接
  • 开源模型应用落地-语音转文本-whisper模型-AIGC应用探索(五)
  • Day 1:Leetcode 两数相除
  • 云原生周刊:Ingress-NGINX 漏洞
  • C# 匿名方法讲解
  • Ubuntu Server版本Ubuntu 24.04.2 LTS下载与安装-详细教程,细致到每一步都有说明
  • 【常用的中间件】
  • c++ count方法
  • HTTP 核心知识点整理
  • C++进阶——哈希表的实现
  • 探秘Transformer系列之(18)--- FlashAttention
  • 如何避免测试环境不稳定导致的误报
  • 单纯形法之大M法
  • 解决 Ubuntu/Debian 中 `apt-get` 报错 “无法获得锁 /var/lib/dpkg/lock“
  • 歌曲缓存相关功能
  • Qt在IMX6ULL嵌入式系统中图片加载问题排查与解决
  • 多线程—锁策略
  • 去中心化金融
  • 漏洞挖掘---锐明Crocus系统Service.do接口任意文件读取
  • 《数字图像处理》第三章 3.8 基于模糊技术的图像强度变换与空间滤波学习笔记
  • 微积分小白入门:第二章 数列与极限——从困惑到顿悟的奇妙之旅
  • Vue 3中的Provide与Inject
  • stm32f103c8t6使用pwm(DMA)驱动24个ws2812b灯驱动
  • 【探寻C++之旅】第十章:map和set(STL续)
  • 看 MySQL InnoDB 和 BoltDB 的事务实现
  • 3.Excel:快速分析
  • 深入理解现代C++在IT行业中的核心地位与应用实践
  • 在 Windows 上安装 PowerShell 的多种方法与完整指南
  • 【设计模式】策略模式(Strategy Pattern)详解