与跳台阶题目不同,跳台阶题目为斐波那契数列,而此题目中青蛙可以一次挑n以内大于0任意数的台阶数,所以当跳n级台阶时,需要将前n-1次跳台阶数的跳法全部加起来,再加上一个一下跳到第n级台阶的一种跳法。
使用两层for循环,将前n-1次的台阶跳法全部加起来再加1得到第n层的。
代码如下:
int jumpFloorII(int number) {
if(number<=2)
{
return number==1?1:2;
}
int a[10000];
a[0]=1;
a[1]=2;
int tmp=0;
for(int i=2;i<number;i++)
{
for(int j=1;j<=i;j++)
{
tmp=tmp+a[i-j];
}
a[i]=tmp+1;
tmp=0;
}
return a[number-1];
}
自己想的算法,肯定还有很多更优的解法,水平有限能力一般仅供参考。