【劍指offer】10-2 變態跳臺階

10-2 變態跳臺階

一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

變態跳臺階問題,是斐波那契額數列 青蛙跳臺階 跳樓梯問題的變形。

假設當前在3臺階,那麼可能從0級跳到3臺階 1臺階到3臺階 2臺階到3臺階 3臺階到3臺階。

f(3) = f(1)+f(2)+f(3)

f(1) = 1

f(2) = 2

f(3) = 1+2+1

1.暴力解

public int JumpFloorII(int target) {
   if(target == 0 || target == 1) {
       return 1;
   }
    int [] f = new int [target+1];
    f[0] = f[1] = 1;
    for(int i=2;i<=target;i++){
        for(int j=0;j<i;j++){
            f[i] += f[j];
        }
    }
    return f[target];
}

2.遞歸

f(n) = 2^(n-1) 找到規律

    public int JumpFloorII(int target) {
        if(target < 0){
            return -1;
        }else if(target == 1){
            return 1;
        }else{
            return 2*JumpFloorII(target-1);
       }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章