题目要求
一个青蛙一次可以跳上一级台阶,也可以跳上两级…也可以跳上n级。
求该青蛙跳上一个n级的台阶总共有多少种条法。
思路
采用动归的方式。
问题:跳上n级台阶的方法个数。
状态F(i):跳上i级台阶的方法个数。
转移方程:F(i):F(i-1)+F(i-2)+…F(0)
F(i-1):F(i-2)+F(i-3)+…F(0)
F(i):F(i-1)+F(i-1)=2*F(i-1)
初始状态:F(1)=1
返回:F(n)左移n-1位
图解
代码实现
class Solution {
public:
int jumpFloor(int number) {
//变态跳台阶算法
if (number == 0)
{
return 0;
}
return 1 << (number - 1);
}
};