カエルのジャンプ
-
質問:nステップにジャンプする方法の数(1、2、... nは毎回ジャンプできます)
-
ステータス:F(i); iレベルのステップにジャンプする方法の数
-
伝達方程式;
-
子供の頃から大きなものへ:(レベル1:1タイプ)(レベル2:2タイプ)(レベル3:4タイプ)(レベル4:8タイプ)
1级:{1} 2级:{1,1} {2} 3级:{1,1,1} {1,2} {2,1} {3} 4级:{1,1,1,1}{1,1,2}{2,2}{1,2,1}{1,3}{2,1,1}{3,1}{4}
-
F(i):F(4)= F(1)+ F(2)+ F(3)+ 1 = F(3)+ F(3)= 2F(3);
-
F(i):F(i-1)+ F(i-2)+…+ F(1)+1;
-
F(i-1):F(i-2)+ F(i-3)+ F(i-1)+…+ 1
-
F(i)= 2 * F(i-1);
-
-
初期状態F(1)= 1;
//第一种写法,递归
public class Solution {
public int JumpFloorII(int target) {
if(target == 0)return 0;
if(target == 1)return 1;
int res = 2*JumpFloorII(target-1);
return res;
}
}
//第二种,for循环
public class Solution {
public int JumpFloorII(int target) {
if(target == 0)return 0;
int res = 1;
for(int i = 2;i <= target;i++){
res *= 2;
}
return res;
}
}
2.単純なカエルが階段をジャンプする
- 質問、nステップにジャンプする方法の数(毎回1つまたは2つのステップのみをスキップできます)
- ステータス:F(i); iレベルのステップにジャンプする方法の数
- 状態遷移方程式
- ステップは1つだけです:1つのタイプ、1つだけジャンプできます
- 2つのステップがあります:2つのタイプ、一度に2つのステップをスキップするか、一度に1つのステップをスキップすることができます
- 3つのステップがあります:3つのタイプ、各ジャンプに1つ、最初に1つ、最初に2つ、最初に2つ、
- i個のステップがあります:F(i)= F(i-1)+ F(i-2);
- 初期状態:F(1)= 1; F(2)= 2;
public class Solution {
public int JumpFloor(int target) {
if(target == 1)return 1;
if(target == 2)return 2;
return JumpFloor(target-1)+JumpFloor(target-2);
}
}