算法017:三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。
题目:三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。示例1:输入:n = 3输出:4说明: 有四种走法示例2:输入:n = 5输出:13提示:n范围在[1, 1000000]之间思路:
动态规划:n 阶可以往前退一步,可以时n-1阶所有情况之和+可以时n-2阶所有情况之和+可以时n-3阶所有情况之和
1.代码如下 WaysToStep.java:
package com.yuhl.right.leetcode;/*** @author yuhl* @Date 2020/10/25 7:53* @Classname WaysToStep* @Description 三步问题* 三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。** 示例1:* 输入:n = 3* 输出:4* 说明: 有四种走法** 示例2:* 输入:n = 5* 输出:13* 提示:** n范围在[1, 1000000]之间*/
public class WaysToStep {public static void main(String[] args) {int res = waysToStep(5);System.out.println(res);}/**** @param n n阶台阶* @return 走法*/public static int waysToStep(int n) {//动态规划:n 阶可以往前退一步,可以时n-1阶所有情况之和+可以时n-2阶所有情况之和+可以时n-3阶所有情况之和if(n==1) return 1;if(n==2) return 2;if(n==3) return 4;long dp1 = 1;long dp2 = 2;long dp3 = 4;long A = 1000000007;for(int i=4; i<=n; i++){long tmp = dp1;dp1 = dp2;dp2 = dp3;dp3 = (tmp + dp1 + dp2)%A;}return (int)dp3;}}
2.执行结果:
"C:\Program Files\Java\jdk1.8.0_201\bin\java.exe"
13
算法017:三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。相关推荐
- 利用CASS使用三种方法计算两期土方
软件及数据准备:南方CASS9.1:开挖前后的坐标高程数据dat格式. 计算方法:方格网网法.三角网法.断面法. 首先,绘出计算的范围线,注意开挖前后范围线一般相同.为了方便后续的三种方法计算,先生成 ...
- Python:三种方法计算最大公约数和最小公倍数(欧几里德法、穷举法、stein算法)
Python:三种方法计算最大公约数和最小公倍数 1.穷举法 2.欧几里德法 3.Stein算法 题目:求取任意两个非负数(至多一个数为0)的最大公约数和最小公倍数: 参考资料:Python解决求最大 ...
- Java的开方和次方Math.sqrt()方法和Math.pow()方法以及求解有多少种连续正整数之和为N的算法详解
1. Java的开方和次方运算 java.lang.Math.sqrt(double a) 返回一个数字a的正平方根,返回结果是double型 java.lang.Math.pow(double a, ...
- C语言一百块钱换成十元20元,把100元人民币换成50元、20元、10元的纸币。计算出有多少种换法?...
把100元人民币换成50元.20元.10元的纸币.计算出有多少种换法?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 把 ...
- 斐波那契数列三种方法计算,光棍节快乐
//斐波那契数列三种方法计算 //Fibnacci(0)=0 //Fibnacci(1)=1 //Fibnacci(n)=Fibnacci(n-1)+Fibnacci(n-2) [n>1] / ...
- 怎么把线稿提取出来_PS教程:提取线稿如此简单?三种方法总有一种适合你
原标题:PS教程:提取线稿如此简单?三种方法总有一种适合你 部落窝教育,每天学习PS独家原创视频 在PS出现之前,如果我们喜欢某个动漫角色大概只能通过临摹的方式将人物线条勾勒出来,但PS的出现将提取线 ...
- 5种方法计算均方位移MSD
5种方法计算均方位移MSD (1)lammps计算 (2)VMD计算 (3)OVITO计算 (4)ISAACS软件计算 (5)自编程计算-附MATLAB代码 总结 在统计力学中,均方位移(MSD,均方 ...
- [PowerBI]两种方法计算每月或每季开发的新客户数量
12月追加:欢迎加入知乎[微软BI技术圈],一起讨论.分享包括PowerBI在内的一切BI话题! 两种方法计算每月或每季开发的新客户数量 简述 客户分析中,有时你可能需要分析每隔一段时间有多少新客户流 ...
- 西门子精智comfort系列面板下载程序的几种方法_参考手册(以太网+PN+USB方式)
西门子精智comfort系列面板下载程序的几种方法_参考手册(以太网+PN+USB方式) 以太网及 PN/IE 方式下载 下载要求 以太网电缆 交叉线: 对电缆的具体要求最好采用T568B的交叉线序标 ...
- 短信备份到另一个手机android,旧手机的短信怎么转移到新手机上?三种方法总有一种适合你...
手机短信一直以来都是我们和其他对象传输信息的工具,更是存储了大量重要的信息,如果我们更换手机需要保留下来这些短信该怎么办呢?有没有什么方法可以将这些短信转移到新手机中去,或者导出到电脑上进行保管呢. ...
最新文章
- SAP卢东明:大数据同样需要小身材
- NSTimer 增加引用计数, 导致内存泄露,
- POJ-2251 Dungeon Master
- 第 19 课时:调度器的调度流程和算法介绍(木苏)
- asp.net 由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值...
- python提取hbase数据_详解python操作hbase数据的方法介绍
- 红黑树和平衡二叉树的区别_一文搞懂红黑树
- toughradius 配置mysql_ToughRADIUS 安装进阶篇
- 键盘鼠标共享效率工具-Synergy
- 技术变革解锁人文新维度
- 多个div中的label标签对齐
- 关于 Injection of autowired dependencies failed 错误的解决方法
- 05 Java 求职简历制作
- mobi文件怎么转化为PDF
- oracle自定义异常长度,Oracle自定义异常收集(二)
- 求助,关于MFC中的 Secur32.lib问题
- 在微信上直播的优势有那些
- 程序猿如何提高申购新股中签率
- 如何评价光伏电站的运维能力
- monkey自动化测试脚本