昨天为大家带来了一道跳台阶的题目,今天为大家带来一道他的兄弟题目——变态跳台阶
为何是变态…大概就是因为他能一次性跳n个台阶吧!!!
话不多说,先上题目:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
首先我们先理理思路:
设该青蛙跳上一个n级的台阶总共有 f(n) 种跳法
- f(1) = 1
- f(n) = f(n-1)+f(n-2)+……f(1)
- f(n-1) = f(n-2)+……f(1)
- 相减得 f(n) = 2f(n - 1)
- 得出结论 f(n) = pow(2,n-1)
接下来代码就简单啦,直接一行搞定!
代码如下:
class Solution {
public:
int jumpFloorII(int number) {
return number <= 0 ? 0 : 1 << (number - 1);
}
};
这里为什么用1<<(number - 1)呢,其实是利用了pow(2,n-1) = 1<<(number - 1) 这一点,你可能会问这么做有什么好处呢?诶,远的不说,首先我们就不需要引入math这个头文件啦,不过有个小小的缺点,那就是这个n超过7它就失效啦,不过呢,还是足以让我们应付这道题目~ 写完提交一下
通过啦!是不是很简单呢,有什么问题可以在评论区跟我讨论哦!!!