解题思路
1、设f(n)表示跳上第n阶台阶的跳法数。
2、则有状态转移方程,f(n) = f(n-1) + f(n-2)
3、其中,f(0) = 1,f(1) = 1,f(2) = 2。
C++解法一(数组)
class Solution {
public:
int jumpFloor(int number) {
// 动态规划
// f(n) = f(n-1) + f(n-2)
// f(0) = 1, f(1) = 1, f(2) = 2
int* dp = new int[number+1];
dp[0] = 1;
dp[1] = 1;
dp[2] = 2;
for(int i = 3; i <= number; ++i)
{
dp[i] = dp[i-1] + dp[i-2];
}
return dp[number];
}
};
解法二(类似斐波那契数列)
class Solution {
public:
int jumpFloor(int number) {
int first = 1;
int second = 1;
int third = 1;
for(int i = 2; i <= number; ++i)
{
third = first + second;
first = second;
second = third;
}
return third;
}
};