CCF NOI100003 上楼梯
问题链接: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; }