import java.util.*; public class Solution { // 动态规划 public int[] dp = new int[23]; public int jumpFloorII (int number) { // write code here // 先求出动态规划方程,对于最后一级台阶,我们可以由倒数第二级台阶跳1步,也可以由倒数第三级台阶跳两步,这样就相对于将楼梯倒过来,f(n) = f(n-1) + f(n-2) + ... + f(n-n+1)+f(n-n) = f(0) + f(1) +++ f(n-1);又f(n-1) = f(n-2) +++ f(n-n);整理得 f(n) = f(n - 1) + f(n - 1) dp[0] = 1; dp[1] = 1; for(int i = 2; i<=number;i++){ dp[i] = 2 * dp[i - 1]; } return dp[number]; } }