牛客题解-NC68跳台阶

题目

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

思路

分析

与斐波那契数列一样,只是初始状态改为

f(0)= f(1)= 1;

状态转移方程仍然为:

f(n) = f(n - 1) + f (n - 2);

题目分析,假设f[i]表示在第i个台阶上可能的方法数。逆向思维。如果我从第n个台阶进行下台阶,下一步有2中可能,一种走到第n-1个台阶,一种是走到第n-2个台阶。所以f[n] = f[n-1] + f[n-2]. 那么初始条件了,f[0] = f[1] = 1。 所以就变成了:f[n] = f[n-1] + f[n-2], 初始值f[0]=1, f[1]=1,目标求f[n]

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Solution {
public int JumpFloor(int target) {
if(target < 2) return 1;
int a = 1;
int b = 1;
int sum = 0;
for(int i = 0; i < target; ++i){
sum = a + b;
a = b;
b = sum;
}
return a;
}
}