爬楼问题
爬楼问题
题目描述:
在计算机学院有一个长腿君,他在爬楼梯的时候从来都是要么上 2 个台阶,要么上 3 个台阶。由于爬楼梯实在太无聊了,长腿君就开始尝试每天采用不同的方式上楼梯。如果长腿君回家需要爬 N 阶台阶,你能告诉长腿君,他爬楼梯回家有多少种不同的方式吗?
请注意,长腿君“先爬 3 个台阶后爬 2 个台阶”和“先爬 2 个台阶后爬 3 个台阶”是两种不同的回家方式。
输入格式:
每次输入一个符合描述的整数N,表示总共的台阶数(2 <= N <= 50)。
输出格式:
输出一行,输出一个整数,表示长腿君有多少种上楼的方式。最后结果保证在 int 范围内。
样例输入1:
5
样例输出1:
2
样例输入2:
40
样例输出2:
31572
代码:
#include <stdio.h>
int main() {
int N;
int step[51];
scanf("%d", &N);
step[0] = 0;
step[1] = 0;
step[2] = 1;
step[3] = 1;
int i;
for(i=4;i<=N;i++)
{
// 第 i 步 可以走2个台阶和3个台阶两种走法,所以总共有 step[i-2] + step[i-3]种,然后再递归
step[i] = step[i-2] + step[i-3];
}
printf("%d", step[N]);
return 0;
}
知行合一,
翻万卷书,游千里路,会百家才