题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
方法一
和之前的动态规划一样,此时的递推公式
f(n)=f(n-1)+f(n-2)+……f(1)
public class Solution {
public int JumpFloorII(int target) {
int [] index =new int[target+1];
index[0]=1;
index[1]=1;
for(int i=2;i<target+1;i++){
for (int j=0;j<i;j++){
index[i]+=index[j];
}
}
return index[target];
}
}
方法二
f(n)=f(n-1)+f(n-2)+……f(1)
f(n-1)=f(n-2)+……f(1)
两式相减得到
f(n)=2f(n-1)
首项为f(1) = 1
public class Solution {
public int JumpFloorII(int target) {
return 1<<(target-1);
}
}
1<<(target-1)代表二进制左移(target-1)位,也就是2的(target-1)次幂