题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思路:先找规律:一个台阶有一种跳法(1)
两个台阶有两种跳法:(1,1)、(2)
三个台阶有三种跳法:(1,1,1)、(1,2)、(2,1)
四个台阶有五种跳法:(1,1,1,1)、(1,1,2)、(1,2,1)、(2,1,1)、(2,2)
五个台阶有八种跳法:(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)
......
类似于斐波那契数列:
;
class Solution {
public:
int jumpFloor(int number) {
if(number<2){
return number;
}
vector<int> jump(number+1);
jump[1]=1;
jump[2]=2;
for(int i=3;i<=number;i++){
jump[i]=jump[i-1]+jump[i-2];
}
return jump[number];
}
};