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

动态规划(1)(java)(面试题)三步问题

题目:

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

示例 1:

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

示例 2:

 输入:n = 5
 输出:13

解法思路:

1--状态表示

        经验+题目要求

        以i位置为结尾。。。。

        dp【i】表示:到达i位置时,一共有多少种方法

2--状态转移方程

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

3--初始化

4--填表顺序

5--返回值

实现:

public class Solution {public int waysToStep(int n) {int MOD = (int) 1e9 + 7;//防止溢出//处理边界的情况if (n == 1 || n == 2) return n;if (n == 3) return 4;int[] dp = new int[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];}public static void main(String[] args) {Solution solution = new Solution();int n=4;System.out.println(solution.waysToStep(n));}
}

相关文章:

  • SAM 2 (Segment Anything ):图像与视频通用分割模型
  • Steam游戏服务器攻防全景解读——如何构建游戏级抗DDoS防御体系?
  • Android ioctl 第二个参数命令码以及BINDER_FREEZE示例
  • vue3项目中eslint.config.ts配置rules
  • 18.ArkUI Video的介绍和使用
  • ECharts 地图开发入门
  • HD Tune Pro v6.10 简体中文汉化单文件版
  • C++_数据结构_详解红黑树
  • Winform(1.Winform控件学习)
  • 每天学一个 Linux 命令(31):md5sum
  • Linux安全模块:SELinux与AppArmor深度解析
  • ✨ Apifox:这玩意儿是接口界的“瑞士军刀”吧![特殊字符][特殊字符]
  • XYNU2024信安杯-REVERSE(复现)
  • kafka与flume的整合、spark-streaming
  • 量子加密通信技术及其应用:构建无条件安全的通信网络
  • 【合新通信】浸没式液冷光模块与冷媒兼容性测试技术报告
  • 【滑动窗口+哈希表/数组记录】Leetcode 3. 无重复字符的最长子串
  • 搜索二叉树-key的搜索模型
  • nc工具!Netcat:TCP/IP瑞士军刀!全参数详细教程!Kali Linux教程!
  • prometheus通过Endpoints自定义grafana的dashboard模块
  • 玉渊谭天丨“稀土管制让美国慌了”,美军工稀土储备仅够数月
  • 从中央政治局会议看经济工作着力点:以高质量发展的确定性应对外部不确定性
  • 常熟银行一季度净赚超10亿增逾13%,净息差较上年末下降0.1个百分点
  • 安徽铁塔再通报“会议室不雅行为”事件:涉事员工停职检查
  • 南宁市委常委、组织部部长陈川已任广西医科大学党委书记
  • 银行板块整体走强,工行、农行、中行股价再创新高