一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
令跳若干步跳上第n
级台阶有dp[n]
种跳法,则
dp[n]=i=1∑n−1dp[i]=i=1∑n−2dp[i]+dp[n−1]
而
dp[n−1]=i=1∑n−2dp[i]
故
dp[n]=2×dp[n]
而dp[1]=1
,故
dp[n]=2n−1
考虑位运算,代码如下:
1 2 3 4 5 6
| class Solution { public: int jumpFloorII(int number) { return 1 << number - 1; } };
|