- 1、题目描述:
图片说明

- 2、题目链接:
https://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4?tpId=188&&tqId=37379&rp=1&ru=/activity/oj&qru=/ta/job-code-high-week/question-ranking

-3、 设计思想:

-4、视频讲解链接B站视频讲解

-5、代码:
c++版本:

 class Solution {
public:

    int jumpFloor1(int number) {
        if(number == 1) return 1;//只有一个台阶的时候就有一种跳法
        if(number == 2) return 2;//只有2个台阶的时候就有2种跳法1)每次跳1格2)直接跳2格
        //第n个台阶是不是可以从第n-1个台阶跳过来,或者第n-2格台阶跳过来,总和就是第n个台阶的总和
        return jumpFloor(number-1)+jumpFloor(number-2);
    }
        int jumpFloor(int number) {
            if(number == 1) return 1;
            vector<int>dp(number + 1,1);
            for(int i = 2;i <= number;i ++){
                dp[i] = dp[i - 1] + dp[i - 2];
            }
            return dp[number];
    }
};

Java版本:

public class Solution {
    public int JumpFloor1(int target) {
        if(target == 1) return 1;//只有一个台阶的时候就有一种跳法
        if(target == 2) return 2;//只有2个台阶的时候就有2种跳法1)每次跳1格2)直接跳2格
        //第n个台阶是不是可以从第n-1个台阶跳过来,或者第n-2格台阶跳过来,总和就是第n个台阶的总和
        return JumpFloor(target-1)+JumpFloor(target-2);
    }
    public int JumpFloor(int target){
        int [] dp = new int[target + 10];
        dp[0] = 1;
        dp[1] = 1;
        for(int i = 2;i <= target;i ++){
            dp[i] = dp[i - 1] + dp[i-2];
        }
        return dp[target];
    }
}

Python版本:

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloor1(self, number):
        # write code here
        if number == 1:return 1 #只有一个台阶的时候就有一种跳法
        if number == 2: return 2#只有2个台阶的时候就有2种跳法1)每次跳1格2)直接跳2格
        #第n个台阶是不是可以从第n-1个台阶跳过来,或者第n-2格台阶跳过来,总和就是第n个台阶的总和
        return self.jumpFloor(number - 1) + self.jumpFloor(number - 2)
    #上面的递归写法超时,所以可以通过上面递归来写出dp方程式
    def jumpFloor(self, number):
        dp = [1 for _ in range(number + 10)]
        for i in range(2,number + 1):
            dp[i] = dp[i-1] + dp[i - 2]
        return dp[number]