【九度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 日

上一篇:centos 7 安装svn客户端


下一篇:自学Linux Shell8.1-linux文件系统概述及操作