题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
题解:
对于n=0时有0中方法,n=1时有一种方法,当n>2,f(n)=f(n-1)+f(n-2)+...+f(1)+f(0),(这里f(0)=1,表示直接一次跳到n阶台阶)代表第n阶台阶可能是从n-1,n-2,...0,台阶直接跳到n台阶的。根据递推公式,能得到f(n)=f(n)*2
class Solution {
public:
int jumpFloorII(int number) {
vector<int> vecs(number+1,0);
if(number == 0)
return 0;
vecs[1] = 1;
for(int i =2;i <= number;i++)
vecs[i] = vecs[i-1]*2;
return vecs[number];
}
};