变态跳台阶
题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:使用动态规划(也可以不用),先找到规律,直接看最后一步,可以从任何位置跳到目的地,就是前面所有和加1。然后再进行化简。
代码:
class Solution {
public:
int jumpFloorII(int number) {
if (number == 0)return 0;
if (number == 1)return 1;
vector<int>dp(number + 1, 0);
dp[1] = 1;
dp[2] = 2;
for (int i = 3; i <= number; i++){
dp[i] = 2*dp[i - 1];
}
return dp[number];
}
};