Java 斐波拉契高级问题(上台阶的问题)
来源:互联网 发布:2017年适合做淘宝客吗 编辑:程序博客网 时间:2024/06/04 18:53
一,问题描述
1,有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上M级,共有多少走法?其中M取值范围为1~100,结果值需要Mod 1000000007的值。
例如 输入 3
输出 2
输入 100
输出687995182
2,解题思路
这题是斐波拉契问题,即f(n)=f(n-1)+f(n-2)。如果使用递归的时候,n取100时,会超时。因此,我们使用动态规划方法来做。
二,AC了的程序
import java.util.*;public class Test2{ //京东的编程题 public int countWays(int n) { if(n<1)//如果取值范围为-1,则直接返回-1. { return -1; } int []data=new int[n+1]; for(int i=1;i<=n;i++) { if (i== 1) { data[1] = 0; } else if (i== 2) { data[2] = 1; } else if (i == 3) { data[3] = 2; } else { data[i] = (data[i - 1] + data[i - 2]) % 1000000007; } } return data[n]; } public static void main(String []args) { Test2 test=new Test2(); Scanner scan=new Scanner(System.in); int n=scan.nextInt(); int sum=test.countWays(n); System.out.println(sum); }}
1 0
- Java 斐波拉契高级问题(上台阶的问题)
- 上台阶问题的算法
- 上台阶问题(递归)
- 上台阶问题
- 上台阶、硬币问题的算法
- 上台阶、硬币问题的算法
- 上台阶,硬币问题的算法
- 上台阶问题(跳法+路径)
- (1.1.7.1)上台阶、硬币问题的算法
- PHP上台阶问题(斐波纳契数列应用)
- 递归的logN的优化(菲波那契数列,青蛙上台阶问题,母牛问题)!!!!
- 递归分治与动态规划--上台阶的问题
- 算法练习——上台阶问题
- java高级多线程编程(一)--关于线程的停止问题
- java高级多线程编程--关于线程的停止问题
- java高级多线程编程(一)--关于线程的停止问题
- java高级多线程编程--关于线程的停止问题
- java高级多线程编程(一)--关于线程的停止问题
- dAO模式理解一
- 学习springmvc的第一天
- java操作json以及jsonObject、jsonArray的使用【申明:来源于网络】
- wampserver记录错误日志
- 移动开发中的软件架构
- Java 斐波拉契高级问题(上台阶的问题)
- 面向过程/对象
- 【数据结构】树(三):红黑树插入与删除操作(C++实现)
- 我的python进阶之路三
- 并查集运用
- 蓝桥网 algo 53
- 编写java程序151条建议读书笔记(3)
- JVM读书笔记(二):垃圾收集器与内存分配策略
- Codeforces 9D How many trees? 题解