有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?注:规定从一级到一级有0种走法。
给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100。为了防止溢出,请返回结果Mod 1000000007的值。
测试样例:
3
返回:2
动态规划,从第三级开始,它的结果有第二级和第一级的结果相加得到,推广到一般,则任意n>=3的台阶,它的方法数:result[i]=result[i-1]+result[i-2];
import java.util.*;
public class GoUpstairs {
public int countWays(int n) {
if (n == 0) {
return 0;
}
long[] result = new long[n + 1];
result[0] = 0;
result[1] = 1;
for (int i = 2; i <= n; i++) {
result[i] = result[i - 1] %1000000007+ result[i - 2]%1000000007;
}
return (int)(result[n] % 1000000007);
}
}