文章目录

1 题目

童年生活二三事
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)
题目描述
NowCoder小时候走路喜欢蹦蹦跳跳,他最喜欢在楼梯上跳来跳去。
但年幼的他一次只能走上一阶或者一下子蹦上两阶。
现在一共有N阶台阶,请你计算一下NowCoder从第0阶到第N阶共有几种走法。

输入描述:
输入包括多组数据。每组数据包括一个整数n, (1≤n≤90)。

输出描述:
对应每个输入包括一个输出。
为redraiment到达第n阶不同走法的数量。

输入例子:
1
2

输出例子:
1
2

2 解析

设f(n)为青蛙从0到n台阶的方案数,
当f(1) = 1,f(2) = 2;
当n为3时,
童年生活二三事————斐波那契数列(递推)_数据
当n为4时,
童年生活二三事————斐波那契数列(递推)_递推_02
于是发现递推式为f(n) = f(n-1)+f(n-2)。也就是斐波那契数列。

  • 用递归(深度搜索)的化,会超时。所以考虑用动态规划,找出递推式,打表,然后查询。
  • 由于递推式最后的值会超过int,采用longlong存储。

3 参考代码

/*
* 详解:
*/
#include

typedef long long ll;
const int MAXN = 91;
ll f[MAXN] = {1,1,2};

int main(int argc, char const *argv[]){
int n;
for (int i = 3; i <= 90; ++i) {
f[i] = f[i -1] + f[i -2];
}
while(scanf("%d", &n) != EOF){
printf("%lld\n", f[n]);
}
return 0;
}