zoukankan      html  css  js  c++  java
  • 1500【自定义函数】走楼梯

    描述

    已知一个楼梯有n级,小谢同学从下往上走,一步可以走一级,也可以走两级。问:他走到第n级楼梯有多少种走法?

    输入

    一行一个正整数n,1≤n≤40。

    输出

    一行一个整数,表示走到第n级有多少种走法。

    输入样例 1 

    9

    输出样例 1

    55

    这道题一上手时,我相信大多数人都会第一时间想到用递推来解。
    但是那样做题的效率较低,方法也相对复杂,不太适合刚入门C++的新手。
    我使用的这个方法是源自曾经刷过的一个小升初的原题。
    我们从1开始。
    楼梯级数 可采用方法数
    1 1
    2 2
    3 3
    4 5
    5 8












    从表格可以看得出来,随着楼梯级数的增加,可采用方法数也随之增加。
    增加的规律就十分眼熟了,可以看得出来增加的规律遵循着斐波那契数列的规则。
    得出这个结论后,这一题就非常简单了。我们可以写一个非常简单的求斐波那契第n项的程序,就可以做出这道题了。
    代码:
     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int a,b,c,k;
     6     cin>>k;
     7     a=1;
     8     b=1;
     9     for(int i=3;i<=k+1;i++)
    10     {
    11         c=a+b;
    12         a=b;
    13         b=c;
    14     }
    15     cout<<b;
    16     return 0;
    17 }

    由于题目要求用自定义函数来解答,所以我们还要把它改成自定义函数的形式。

     1 #include<iostream>
     2 using namespace std;
     3 void louti(int k)
     4 {
     5     int a=1,b=1,c;
     6     for(int i=3;i<=k+1;i++)
     7     {
     8         c=a+b;
     9         a=b;
    10         b=c;
    11     }
    12     cout<<b;
    13 }
    14 int main()
    15 {
    16     int a,b,c,k;
    17     cin>>k;
    18     louti(k);
    19     return 0;
    20 }
  • 相关阅读:
    uva11025 The broken pedometer
    uva131 The Psychic Poker Player
    子集生成算法
    uva10167 Birthday Cake
    poj1129 Channel Allocation
    poj2676 Sudoku
    Emacs杂谈(一)Emacs环境 c++ 快捷键
    poj1416 Shredding Company
    英文报刊推荐
    搜索练习(二)工作效益
  • 原文地址:https://www.cnblogs.com/cyk20081108/p/14351557.html
Copyright © 2011-2022 走看看