题目链接:https://www.oj.swust.edu.cn/problem/show/2425


跳台阶

Edit Manage Data Rejudge

Time Limit: 1000 MS Memory Limit: 65536 KB

Total Submit: 380 Accepted: 133 Page View: 1154

Submit Status Discuss

Description

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

Input

输入包含多个测试样例,对于每个测试案例,输入包括一个整数n (1 <= n <= 50)。

Output

对应每个测试案例,输出该青蛙跳上一个n级的台阶总共有多少种跳法。

Sample Input

6

Sample Output

32


解题心得:

  1. 其实就是一个递推的题,每个如果一个青蛙要跳到第n级台阶,那么这个青蛙可以从它前面的所有的台阶跳到第n级,这样到达第n级台阶的方法就等于前面所有的相加,当然也可以直接跳到第n级,所以最后需要加1,如果想不通可以假设这个青蛙每次只能跳1阶或者跳2阶,这就成了一个斐波那契数列。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll; const int maxn = 50;
ll method[maxn]; void init() {
method[1] = 1;
method[2] = 2;
for(int i=3;i<=50;i++) {
for(int j=1;j<i;j++) {
method[i] += method[j];
}
method[i] += 1;
}
} int main() {
init();
int n;
while(scanf("%d",&n) != EOF ) {
printf("%lld\n",method[n]);
}
return 0;
}
05-29 01:29