1.一只青蛙一次可以跳上1級臺階扣囊,也可以跳上2級秃臣。求該青蛙跳上一個n級的臺階總共有多少種跳法(先后次序不同算不同的結果)沸枯。
public class Solution {
public int JumpFloor(int target) {
return jump(target);
}
public int jump(int n){
if(n == 1){
return 1;
}
if(n == 2){
return 2;
}
return jump(n-1)+jump(n-2);
}
}
2.一只青蛙一次可以跳上1級臺階肤视,也可以跳上2級……它也可以跳上n級徙赢。求該青蛙跳上一個n級的臺階總共有多少種跳法字柠。
public class Solution {
public int JumpFloorII(int target) {
return jump(target);
}
public int jump(int n){
if(n == 1 || n == 0){
return 1;
}
int total = 0;
for(int i=1;i<=n;i++){
total += jump(n-i);
}
return total;
}
}
更簡便的方法
public class Solution {
public int JumpFloorII(int target) {
int [] a = new int[target + 1];
a[0] = 1;
a[1] = 1;
for(int i=2;i<=target;i++){
a[i] = jump(i,a);
}
return a[target];
}
public int jump(int n,int []a){
int total = 0;
for(int i=0;i<n;i++){
total = total + a[i];
}
return total;
}
}
動態(tài)規(guī)劃參考博客:
https://blog.csdn.net/u013309870/article/details/75193592