zoukankan      html  css  js  c++  java
  • 爬楼梯

    可能看到标题大家会很惊讶,毕竟这道题实在是太简单了,但是,我要讲的并不是这道题。

    爬楼梯

    总时间限制: 1000ms
     
    内存限制: 
    65536kB
    描述

    树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数
    例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级
    也可以第一次走两级,第二次走一级,一共3种方法。

    输入
    输入包含若干行,每行包含一个正整数N,代表楼梯级数,1 <= N <= 30
    输出
    不同的走法数,每一行输入对应一行输出
    样例输入
        5
        8
        10
    样例输出
        8
        34
        89
    好吧,我还是简单说一下吧。这道题属于递归题中最为基础的一道关于拆分可能性的题,因此我们只要找到递归通式并确定出口就可以了。例如:爬到顶楼有两种情况,即爬一层和爬两层,因此可以得到递归通式f(n)=f(n-1)+f(n-2)。递归出口则是f(1)=1,f(2)=2 。由此,这道题就解完了。
    那么,终于到了要讲的重点了:
      有人可能会发现一个问题:为什么我敢用cin,cout?
      其实我也不想用。。。
      但是,由于这道题没有给出数据组数,因此只能用循环读入的方法,而这里便用到了cin的最大的好处也是最大的缺点:cin读入时不识别空格,即刚开始遇到空格便跳过,读入中遇到空格便中断,由此我们就可以有效的避免scanf读入数据爆时间的尴尬境况。
      
      其实,cin和scanf各有各的优点,各有各的缺陷,例如:cin和scanf相比就无法读入大量数据。因此,只有合理使用,扬长避短,才能最大化优化代码。
    最后,附上本题代码
    #include<iostream>
    using namespace std;
    int a[35];
    int pa(int x)
    {
        if(x==1)
        {
            return 1;
        }
        else if(x==2)
        {
            return 2;
        }
        else
        {
            return pa(x-1)+pa(x-2);
        }
    }
    int main()
    {
        int n;
        while(cin >>n)
        {
            cout << pa(n) <<endl;
        }
        return 0;
    }
  • 相关阅读:
    javascript关于继承
    javascript组合继承
    javascript创建对象的几种模式
    Angularjs学习笔记6_table1
    Angularjs学习笔记5_form1
    Angularjs学习笔记3_datepicker
    Angularjs学习笔记2_添加删除DOM元素
    Angularjs学习笔记5_scope和$rootScope
    Angularjs学习笔记1_基本技巧
    RabbitMQ基础概念
  • 原文地址:https://www.cnblogs.com/yufenglin/p/10029863.html
Copyright © 2011-2022 走看看