今日碎碎念: 雨快停了~
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
知识点
贪心算法
a.建立数学模型来描述问题;
b.把求解的问题分成若干个子问题;
c.对每一子问题求解,得到子问题的局部最优解;
d.把子问题的解局部最优解合成原来解问题的一个解。
解题分析
跟上一题不贪心的小青蛙比,这只像青蛙的最后一跳就可能性更多种多样啦。不仅仅是1或者2,也可能是其他的~这个时候我们就可以枚举 还是一样的操作啊
代码实现
解法一:化简前,递归方法
class Solution {
public:
int jumpFloorII(int number) {
int result=1;
if(number==1){return result;}
//第n阶的小青蛙上一步可能来自0到n-1
else{
for(int i=1;i<number;i++){
result+=jumpFloorII(i);
}
}
return result;
}
};
解法二:化简后,2的(n-1)次方
class Solution {
public:
int jumpFloorII(int number) {
int result=1;
while(--number){
result*=2;
}
return result;
}
};
结果