超级楼梯-斐波那契数列的运用

Posted 谦谦君子,陌上其华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超级楼梯-斐波那契数列的运用相关的知识,希望对你有一定的参考价值。

Problem Description

有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
Input
输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。
 
Output
对于每个测试实例,请输出不同走法的数量
 
Sample Input
2 2 3
 
Sample Output
1 2
 
每次有2种走法,并且要求最后还能干好到达M级。
正着不行,逆向思维一下,要达到最后一级的前一级只能是M-1或者M-2;
也就是说就是到达M-1的走法加上M-2的走法相加就等于到达最后一级的走法。
所以递推公式:
F(n)=F(n-1)+F(n-2);
F(1)=1,F(2 )=2;
这就是斐波那契数列:每个数都等于它的前两个数字和(前2个除外);

 如果要走到第4层,那么可以在第3层走一步或者在第2层走两步 ,那么如果走到第2层有a种走法,走到第3层有b种走法,那么走到第4层就有a+b中走法。
 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int n, i, j;
 6     int a[40];
 7     a[2] = 1;
 8     a[3] = 2;
 9     for (i = 4; i <= 40; ++i)
10         a[i] = a[i - 1] + a[i - 2];
11     cin >> n;
12     for (i = 0; i<n; ++i)
13     {
14         cin >> j;
15         cout << a[j] << endl;
16     }
17 }

 



以上是关于超级楼梯-斐波那契数列的运用的主要内容,如果未能解决你的问题,请参考以下文章

2041-超级楼梯(斐波那契)/(排列组合)

前端算法必知必会之动态规划-爬楼梯(斐波那契数列)

数楼梯——恶心的高精斐波那契数列

数楼梯(斐波那契数列+高精度)

[每日一题2020.06.14]leetcode #70 爬楼梯 斐波那契数列 记忆化搜索 递推通项公式

70. 爬梯子问题(斐波那契数列)Climbing Stairs