CCF NOI100003 上楼梯

问题链接CCF NOI100003 上楼梯




时间限制: 1000 ms  空间限制: 262144 KB

题目描述 

  楼梯有N级台阶,上楼可以一步上一级台阶,也可以一步上两级台阶。编一程序,计算共有多少种不同的走法。

输入

  一行,一个整数n(1 <= n <= 30),表示台阶的级数

输出

  一个整数,走法的种数。

样例输入

3
样例输出

3
方案1:走三次,每次一步
方案2:先走一级,再走两级
方案3:先走两级,再走一次

数据范围限制

 




问题分析

  这是一个递推计算问题,关键是找出递推式

  参见参考链接。

程序说明

  (略)

要点详解

  • 尽量用函数封装功能函数
  • 递推问题的关键是递推式。



参考链接HDU2041 超级楼梯

100分通过的C语言程序:

#include <stdio.h>

typedef unsigned long long ULL;

ULL stairs(int n)
{
    ULL f1=1, f2=2, temp;

    if(n == 0)
        return 0;
    else if(n == 1)
        return 1;
    else if(n == 2)
        return 2;

    for(int i=3; i<=n; i++) {
        temp = f1 + f2;
        f1 = f2;
        f2 = temp;
    }

    return f2;
}

int main(void)
{
    int n;

    scanf("%d", &n);

    printf("%lld\n", stairs(n));

    return 0;
}



posted on 2017-04-29 17:51  海岛Blog  阅读(366)  评论(0编辑  收藏  举报

导航