当前位置: 首页 > 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));}
}

http://www.xdnf.cn/news/130789.html

相关文章:

  • 深度学习笔记22-RNN心脏病预测(Tensorflow)
  • Python torch.optim.lr_scheduler 常用学习率调度器使用方法
  • Vue3 路由
  • Windows与CasaOS跨平台文件同步:SyncThing本地部署与同步配置流程
  • WebGL2简介
  • Java从入门到“放弃”(精通)之旅——JavaSE终篇(异常)
  • 畅游Diffusion数字人(28):InstantID原班人马提出个性化人物定制InstantCharacter
  • [AI Workflow] 基于多语种知识库的 Dify Workflow 构建与优化实践
  • 【产品经理】常见的交互说明撰写方法
  • leetcode刷题日记——逆波兰表达式求值
  • R7周:糖尿病预测模型优化探索
  • 佐航BYQ2321直阻变比二合一全面升级!
  • RunnerGo API性能测试实战与高并发调优
  • Python图形界面编程(二)
  • 使用 Frp 同时实现 HTTP 和 HTTPS 内网穿透
  • SQLMesh 表格对比指南:深入理解 table_diff 工具的实际应用
  • c++进阶——类与继承
  • 命令行指引的尝试
  • 【Linux学习笔记】进程的fork创建 exit终止 wait等待
  • 如何让 HTML 文件嵌入另一个 HTML 文件:详解与实践
  • Java面试高频问题(26-28)
  • 使用浏览器的Clipboard API实现前端复制copy功能
  • 基准指数选股策略思路
  • 风光储能+智能调度,这才是企业未来能源管理的最优解
  • Linux进程学习【基本认知】
  • vscode切换Python环境
  • C++中的浅拷贝和深拷贝
  • 【现代深度学习技术】循环神经网络06:循环神经网络的简洁实现
  • 头歌实训之索引
  • MySQL 库的操作 -- 增删改查,备份和恢复,系统编码