跳台阶(变态版)

问题

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。
求该青蛙跳上一个n级的台阶总共有多少种跳法。

算法1

dp问题
在这里插入图片描述

  • n = n时,会有n中跳的方式,1阶、2阶…n阶,得出结论:
    f(n) = f(n-1)+f(n-2)+…+f(n-(n-1)) + f(n-n)
  • f(n-1) = f(0) + f(1)+f(2)+f(3) + … + f((n-1)-1)
    l两者先减可以得到
    f(n)=2f(n-1)
public int JumpFloorII(int target) {

        if(target==1){
            return 1;
        }
        if(target==2){
            return 2;
        }
	//将大问题划分为小问题进行解决
        return JumpFloorII(target-1)*2;


    }

算法2

每个台阶都有跳与不跳两种情况(除了最后一个台阶),最后一个台阶必须跳。所以共用2^(n-1)中情况

  //每一个台阶都有跳与不跳两种情况(除了最后一个台阶)最后一个台阶必须跳,所以共有2^(n-1)中情况
    public int JumpFloorII2(int target){
        return  (int)Math.pow(2,target-1);
    }
发布了198 篇原创文章 · 获赞 20 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ZHOUJIAN_TANK/article/details/104903784