zoukankan      html  css  js  c++  java
  • HDU_oj_2041 超级楼梯

    Problem Description
     
    有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
     
    Input
    输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。
     
    Output
    对于每个测试实例,请输出不同走法的数量
     
    Sample Input
    2
    2
    3
     
    Sample Output
    1
    2
     
    分析:
    第n级台阶只能从第n-1层或n-2层上来,所以计算第n级只需要将n-1级的走法加上n-2级的走法
    即:F(n)=F(n-1)+F(n-2)
    很像斐波那契数列,是典型的递归问题
    注意点:
     
    //递归解法,但不是递归写法
    //递归写起来可能会超时
    #include<iostream>
    using namespace std;
    
    int main()
    {
        int n,m;
        int fx,fy,cnt;
        cin>>n;
        cnt=0;fx=1;fy=2;
        while(n--)
        {
            cin>>m;
            cnt=0;fx=1;fy=2;
            for(int i=4;i<=m;i++)
            {
                cnt=fx+fy;
                fx=fy;
                fy=cnt;
                
            }
            if(m==2)
            cout<<fx;
            else if(m==3)
            cout<<fy;
            else
            cout<<cnt;
            cout<<endl;
        }
        return 0;
    }
     
     
  • 相关阅读:
    第八次作业
    第七次作业2
    jsp第十一次作业
    jsp第十次作业
    jsp第九次作业
    jsp第八次作业
    jsp第七次作业
    jsp第六次作业
    软件测试第二次作业
    jsp第五次作业
  • 原文地址:https://www.cnblogs.com/tenjl-exv/p/8016575.html
Copyright © 2011-2022 走看看