题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:先找规律:一个台阶有一种跳法(1)
两个台阶有两种跳法:(1,1)、(2)
三个台阶有四种跳法:(1,1,1)、(1,2)、(2,1),(3)
四个台阶有八种跳法:(1,1,1,1)、(1,1,2)、(1,2,1)、(2,1,1)、(2,2) 、(1,3)、(3,1)、(4)
五个台阶有十六种跳法:(1,1,1,1,1)、(1,1,1,2)、(1,1,2,1)、(1,2,1,1)、(2,1,1,1)、(1,2,2)、 (2,1,2)、(2,2,1)、(1,1,3)、(1,3,1)、(3,1,1)、(3,2)、(2,3)、 (1,4)、(4,1)、(5)
.....
得出:
;
class Solution {
public:
int jumpFloorII(int number) {
if(number<2){
return number;
}
vector<int> F(number+1);
F[1]=1;
for(int i=2;i<=number;i++){
F[i]=2*F[i-1];
}
return F[number];
}
};