题解 | #跳台阶#
跳台阶
http://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4
递归的解法:
public class Solution {
public int jumpFloor(int target) {
if (target==1|target==0) return 1;
return jumpFloor(target-1)+jumpFloor(target-2);
}
}
动态规划的解法:
public class Solution {
public int jumpFloor(int target) {
int [] dp = new int[50];
dp[0]=1; dp[1]=1;
for(int i=2;i<=target;i++) dp[i]=dp[i-1]+dp[i-2]; //状态转移方程
return dp[target];
}
}
动态规划的优化版
public class Solution {
public int jumpFloor(int target) {
int a=1,b=1;
for(int i=2;i<=target;i++){
int c=a+b;
a=b;
b=c;
}
return b;
}
}