跳台阶
描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解题
Solution
/**
* 跳台阶
* 1.递归;2.动态规划;3.优化存储
*/
public class Solution {
public static void main(String[] args) {
Solution s1 = new Solution();
System.out.println(s1.jumpFloor2(7));
}
public int jumpFloor(int target) {
if(target==1||target==2) return target;
return jumpFloor(target-1)+jumpFloor(target-2);//递归
}
public int jumpFloor2(int target){
if (target==1||target==2) return target;
int[] arr = new int[target];
arr[0]=1;
arr[1]=2;
for (int i=2;i<target;i++){
arr[i]=arr[i-1]+arr[i-2];//动态规划
}
return arr[target-1];
}
public int jumpFloor3(int target) {
if(target==1||target==2) return target;
int a=1,b=2;//优化存储
for (int i = 3; i <= target ; i++) {
b=a+b;
a=b-a;
}
return b;
}
}