跳台阶

你快乐吗?

Posted by bbkgl on September 26, 2019

跳台阶


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];
    }
};