ACM HDU 2041--超級樓梯題解


超級樓梯

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 48297    Accepted Submission(s): 24705


Problem Description
有一樓梯共M級,剛開始時你在第一級,若每次只能跨上一級或二級,要走上第M級,共有多少種走法?
 

 

Input
輸入數據首先包含一個整數N,表示測試實例的個數,然后是N行數據,每行包含一個整數M(1<=M<=40),表示樓梯的級數。
 

 

Output
對於每個測試實例,請輸出不同走法的數量
 

 

Sample Input
2 2 3
 

 

Sample Output
1 2
 

 

Author
lcy
 

 

Source
 

 

Recommend
lcy   |   We have carefully selected several similar problems for you:   2018  2042  1297  1465  2190 

 

  本題用遞推就可以,這是一個斐波那契數列,數列的第n項f(n)=f(n-1)+f(n-2),已知f(1)和f(2),由此可以依次推出f(3)....f(n)。
本題規定1<=M<=40,那么可以先將所有項推出並保存到一個數組當中,數組的下標表示第i層樓梯,其對應的數值為第i層樓梯有多少種走法。
將數列保存到數組中后,輸入第M層樓梯,從數組中輸出對應下標的值即可。
AC代碼:
 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int a[45],i,n;
 7     a[1]=0;
 8     a[2]=1;
 9     a[3]=2;
10     for(i=4;i<45;i++)
11         a[i]=a[i-1]+a[i-2];
12     while(cin>>n)
13     {
14         while(n--)
15         {
16             cin>>i;
17             cout<<a[i]<<endl;
18         }
19     }
20     return 0;
21 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM