题目描述
时间限制:1秒 空间限制:32768K 热度指数:260288
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路
到第n阶的走法,相当于前面第i阶再跳n-i步可到达第n阶(1<=i<n),然后再加上从起点一次跳n级,故
第n阶走法=前n-1阶走法之和+1=前n-2阶走法之和+第n-1阶走法+1
第n-1阶走法=前n-2阶走法之和+1 即 前n-2阶走法之和=第n-1阶走法-1
故第n阶走法=第n-1阶走法-1+第n-1阶走法+1=2*第n-1阶走法
class Solution {
public:
int jumpFloorII(int n) {
if(n<=2)
return n;
int t=2; //二阶台阶的走法
for(int i=3;i<=n;i++)
{
t=2*t; //第i阶走法和为=前i-1阶走法之和+1
}
return t;
}
};