您的位置:首页 > 其它

上楼梯(动态规划)

2017-04-30 20:31 141 查看
—————–>>>>>> 题目来源<<<<<<———————

题目描述

有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶、3阶。请实现一个方法,计算小孩有多少种上楼的方式。为了防止溢出,请将结果Mod 1000000007

给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100000。

测试样例:

1

返回:1

解题思路:这题用的是动态规划的解法。由题可知,到目标阶梯的方法共有三种:

1.由n-1到达,走了一步。

2.由n-2到达,走了两步。

3.由n-3到达,走了三步。

那么,很明显,这三种到达目标阶梯的总和就是到达目标阶梯的所有可能性。

直接贴代码。

public static int countWays(int n) {
int a[] = { 1, 1, 2 };//代表 0 1 2 个阶梯的可能性
if (n < 3) {
return a
;
}
int i = 3;
for (; i <= n ; i++) {
int x = 0;
for (int j = 0; j < 3; j++) {
x += a[(i + j) % 3];
x %= 1000000007;
}
a[i % 3] = x;
}
return a[(i - 1) % 3];
}

public static void main(String[] args){
Scanner input=new Scanner(System.in);
int n=input.nextInt();
System.out.println(countWays(n));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: