您的位置:首页 > 其它

N阶楼梯上楼问题_1205

2015-05-14 16:31 176 查看
题目描述:

N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归)

输入:

输入包括一个整数N,(1<=N<90)。

输出:

可能有多组测试数据,对于每组数据,

输出当楼梯阶数是N时的上楼方式个数。

样例输入:
4


样例输出:
5

import java.util.*;
 
public class Main
{
    static long[] array = new long[91];
 
    public static void main(String[] args)
    {
        // 1. Initialize
        Scanner scanner = new Scanner(System.in);
         
        array[1] = 1;
        array[2] = 2;
         
        // 2. 
         
        for (int i = 3; i <= 90; i++)
        {   
            array[i] = array[i - 1] + array[i - 2];
        }
         
        // 
        while (scanner.hasNext())
        {   
            int n = scanner.nextInt();
            System.out.println(array
);
             
        }
         
         
        scanner.close();
    }
 
}
</pre><pre name="code" class="java"><pre name="code" class="java">设上n级楼梯的走法为a(n),则a(n)的值等于是a(n-1)的值与a(n-2)的值的和,比如上5级楼梯的走法是4级楼梯走法和3级楼梯走法的和,因为走3到级时再走一次(2级)就到5级了,同样,走到4级时再走一级也到5级了。从而a(n)=a(n-1)+a(n-2),是斐波纳契数列。
显然1阶楼梯1种走法,a(1)=1,2阶楼梯2种走法,a(2)=2,所以a(3)=1+2=3,a(4)=2+3=5,a(5)=3+5=8,...,a(30)=1346269. 
所以1346269即为所求。
a(n)代表的含义是上n层可能有的方法数,到达n层有两种方法,一种是从n-1层迈一步走上来,另一种方法是从n-2层迈两步上来,所以a(n)=a(n-1)+a(n-2);至于后面,是递归得来的



类似的问题有:

跳台阶 1388

题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

输入:
输入可能包含多个测试样例,对于每个测试案例,

输入包括一个整数n(1<=n<=70)。

输出:
对应每个测试案例,

输出该青蛙跳上一个n级的台阶总共有多少种跳法。

样例输入:
5


样例输出:
8


import java.util.Scanner; 
public class Main {
    public static void main(String args[]) {        
        Scanner input= new Scanner(System.in);
        while (input.hasNext()) {
            int n=input.nextInt();
            long output=  result(n);  
            System.out.println(output);
            }            
        }    
    public static long  result(int n)
    {
         long fabnc[]=new long[n+2];
         fabnc[1]=1;
         fabnc[2]=2;
                 
            for(int c=3;c<=n;c++){
                fabnc[c]=fabnc[c-1]+fabnc[c-2];     
                     
                }
            return fabnc
;
             
    }
}


中间那里可以修改成 这样



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: