您的位置:首页 > Web前端

剑指OFFER的跳台阶问题

2016-04-08 22:37 274 查看
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

(斐波那契数列的变形)

F(1)=1;F(2)=2;

F(n)=F(n-1)+F(n-2);

class Solution {
public:
int jumpFloor(int number) {
if(number<=0) return 0;
if(number==1||number==2)
return number;
else return jumpFloor(number-1)+jumpFloor(number-2);

}
};


一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法.

(这个解法记不太清楚了)

但是直接分析也可以解出来,n个台阶

F(n)=1+F(n-1)+F(n-2)+````+F(1);

1次跳n阶,最后一次跳1个,对应就是F(n-1),最后一次跳2个,对应就是F(n-2)·····

class Solution {
public:
int jumpFloorII(int number) {
int* array1=new int[number];
array1[0]=1;
array1[1]=2;
for(int i=2;i<number;i++){
int j=0,temp=0;
while(j<i){
temp+=array1[j++];
}
array1[i]=temp+1;
}
return array1[number-1];

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: