问题链接: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;
}