acm 2041 java的做法

Problem Description
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
 

 

Input
输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。
 

 

Output
对于每个测试实例,请输出不同走法的数量
 

 

Sample Input
2 2 3
 

 

Sample Output
1 2
 
m=2时有1种情况 m=3有2种情况,由此规律可得,如果m个台阶,则跳最后一次可能为一级或者两级。若跳一级,则在m-1的情况加一级,若跳2级,则从m-2的情况下增加两级,可得递推式
arr[m]=arr[m-1]+arr[m-2];
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
                Scanner in= new Scanner(System.in);    
                int n=in.nextInt();
                int [] arr = new int[41];
                arr[1]=1;
                arr[2]=1;
                arr[3]=2;
                for(int i=4;i<=40;i++){
                    arr[i]=arr[i-1]+arr[i-2];
                    
                }
                while(n>0){
                    int m=in.nextInt();
                    System.out.println(arr[m]);
                    n--;
                }
      }
    }

posted @ 2016-11-14 19:34  长存  阅读(160)  评论(0编辑  收藏  举报