题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解题思路:
和之前跳台阶问题相比,这道题就是将跳台阶的类型增加到了n。实际上对于f(n)来说,总的跳台阶数目就是前n-1的总和加上当前的1。用F(n)表示所有从1,2...n这所有台阶跳法的总数,那么f(n)=F(n)-F(n-1)。其中F(n)=2*F(n-1)+1。
代码:
class Solution { public: int jumpFloorII(int number) { vector<int> sum_jump; sum_jump.push_back(0); sum_jump.push_back(1); if(number<=1) return sum_jump[number]; for(int i=2; i<=number; i++) { sum_jump.push_back(sum_jump[i-1]*2+1); } return sum_jump[number]-sum_jump[number-1]; } };