zoukankan      html  css  js  c++  java
  • 超级楼梯-斐波那契数列的运用

    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 }


  • 相关阅读:
    mysql case when用法
    php+mysql实现事务回滚
    go安装windows源码
    【C++】子类访问父类typedef的问题
    【C++】STL算法之remove_if
    MySQL常用函数总结
    Apriori算法+python实现
    数据库索引理论
    Linux基本命令
    JAVA 多线程
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/6021450.html
Copyright © 2011-2022 走看看