跳台阶
C++,动态规划。动态规划按我的理解就是当前点最优解和之前的最优解有确定的关系,可以通过这个关系确定当前最优解,从而确定最后的最优解。我们写代码要做的就是把每个点的最优解记录下来,本题思路如下:
- 要跳上跳上第
i
级台阶,一定是从第i-1
级或者i-2
级跳上来的; - 也就是说跳上第
i
级台阶的跳法,一定是跳上第i-1
级和i-2
级的跳法的和; - 用代码语言就是
dp[i] = dp[i-1] + dp[i-2]
; - 注意边界条件,比如跳上第一级只能一种跳法,第二级只有两种跳法。
其实就是斐波那契数列。。。
class Solution {
public:
int jumpFloor(int number) {
int dp[50];
dp[1] = 1;
dp[2] = 2;
for (int i = 3; i <= number; i++)
dp[i] = dp[i-1] + dp[i-2];
return dp[number];
}
};