爬楼梯
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
小明是个非常无聊的人,他每天都会思考一些奇怪的问题,比如爬楼梯的时候,他就会想,如果每次可以上一级台阶或者两级台阶,那么上 n 级台阶一共有多少种方案?
Input
输入包含多组测试数据,对于每组测试数据:
输入只有一行为一个正整数 n(1 ≤ n ≤ 50)。Output
对于每组测试数据,输出符合条件的方案数。
注意:64-bit 整型请使用 long long 来定义,并且使用 %lld 或 cin、cout 来输入输出,请不要使用 __int64 和 %I64d。Sample Input
2 4Sample Output
2 5Hint
Source
代码如下:
/********************************
当n为1时,有1种方案,当n为2时有
2种方案,当n为3时分2种情况第一步为
1时,还剩2个台阶即f[2] ,第一步为
2时,还剩1个台阶即f[1],所以f[3]=f[1]+f[2]
所以f[n] = f[n-1] + f[n-2]
*********************************/
#include<stdio.h>
int main()
{
int n ;
int i ;
long long f[100] ;
f[1] =1 ;
f[2] = 2 ;
while(~scanf("%d",&n))
{
for(i= 3 ; i<= n ; i++)
{
f[i] = f[i-1]+f[i-2] ;
}
printf("%lld\n",f[n]) ;
}
return 0 ;
}