【九度OJ】题目1205:N阶楼梯上楼问题 解题报告

【九度OJ】题目1205:N阶楼梯上楼问题 解题报告

标签(空格分隔): 九度OJ


http://ac.jobdu.com/problem.php?pid=1205

题目描述:

N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归)
  

输入:

输入包括一个整数N,(1<=N<90)。

输出:

可能有多组测试数据,对于每组数据,
输出当楼梯阶数是N时的上楼方式个数。

样例输入:

4

样例输出:

5

Ways

还是纠结了一点时间的,本来就想的是可以用DP的方法,第n次的结果等于第n-1次结果加上n-2次的结果。但是我想这样得用递归,不合题意。后来看了书发现不用递归也能实现上面的流程!

用个数组保存所有的结果,然后直接取就行了,可以省去递归。

这个类似于费布拉奇数列,90次的结果挺大的,要用long long 保存。

#include<stdio.h>

int main() {
    int n;
    while (scanf("%d", &n) != EOF) {
        long long F[90];
        F[1] = 1;
        F[2] = 2;
        for (int i = 3; i < 90; i++) {
            F[i] = F[i - 1] + F[i - 2];
        }
        printf("%lld\n", F[n]);
    }
    return 0;
}

Date

2017 年 3 月 19 日

posted @ 2017-03-19 16:10  负雪明烛  阅读(30)  评论(0编辑  收藏  举报