时间限制:1 秒
内存限制:128 兆
特殊判题:否
提交:2817
解决:1073
- 题目描写叙述:
-
N阶楼梯上楼问题:一次能够走两阶或一阶。问有多少种上楼方式。
(要求採用非递归)
- 输入:
-
输入包含一个整数N,(1<=N<90)。
- 输出:
-
可能有多组測试数据。对于每组数据,
输出当楼梯阶数是N时的上楼方式个数。
- 例子输入:
-
4
- 例子输出:
-
5
基本思路:
走到第n阶时可能是从第n-1阶走一步到的。也可能是从n-2阶走两阶到的。
设F(n)为走到n阶的走法数量,则状态转移方程为
F(n)=F(n-1)+F(n-2).
#include<stdio.h>
#include<string.h>
long long f[100];
int main(int argc, char *argv[])
{
int n;
while(~scanf("%d",&n))
{
memset(f,0,sizeof(f));
f[0]=f[1]=1;
for(int i=2;i<=n;++i)
f[i]=f[i-1]+f[i-2];
printf("%lld\n",f[n]);
}
return 0;
}