题目:变态跳台阶
题目描述
一只青蛙,他比较变态,一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解题思路
可以用逆推的思想,跳n级台阶,可以从n-1级跳上来,也可以从n-2级跳上来,从n-3级跳上来,依次下去,从第1级跳上去,或直接跳上去,所以,跳n级台阶的方法数相当于其它所有台阶数的方法的总和再加上从0级跳上去,表达式为 f(n) = f(n-1) + f(n-2) +…+ f(2) + f(1) + 1。
而f(n-1)=f(n-2)+… +f(1)+1。
将两式想减可以求出递推公式,也即是 f(n)-f(n-1)=f(n-1),即可得到动态规划法的公式f(n)=2*f(n-1)。
参考代码
方法1
class Solution
{
public int jumpFloorII(int number)
{
// write code here
if(number ==0 || number == 1)
return 1;
else if(number == 2)
return 2;
else
{
int sum = 0;
for(int i=0;i<number;i