超级台阶
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?
注:规定从一级到一级有0种走法。
输入
输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数。
输出
对于每个测试实例,请输出不同走法的数量。
样例输入
2
2
3
样例输出
1
2
因为
1阶台阶,1种走法;
2阶台阶,有1+1、2,共2种走法;
3阶台阶,有1+1+1、1+2、2+1,共3种走法;
4阶台阶,有1+1+1+1、1+1+2、1+2+1、2+1+1、2+2,共5种走法;
5阶台阶,有1+1+1+1+1、1+1+1+2、1+1+2+1、1+2+1+1、2+1+1+1、1+2+2、2+1+2、2+2+1,共8种走法;
1+2=3 2+3=5 3+5=8 符合斐波那契数列F[i]=F[i-1]+F[i-2]
import java.util.Scanner;
public class Main {
private static int[] a = new int[41];
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
a[1] = 0;
a[2] = 1;
a[3] = 2;
for(int i=4; i<41; i++) {
a[i] = a[i-1] + a[i-2];
}
while(n!=0) {
int m = scanner.nextInt();
System.out.println(a[m]);
n--;
}
}
}