- 1、题目描述:
-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]

京公网安备 11010502036488号