Javaのジャンプ変態は安全プランを証明するために、手順

異常なジャンプ階段

説明タイトル
カエル、それはであるn段よい......一つはジャンプをジャンプすることができるステージ1、ステージ2をジャンプできる手順。カエルはどのように多くのジャンプのn級レベルの合計を求めて飛び込みました。

思路:F(N)= F(N-1)+ F(N-2)+ F(N-3)+ ... + 1。

F(N-1)= F(N-2)+ F(N-3)+ F(N-4)+ ... + 1。

(N-1)(N)= 2F fの二つの式を減じました

F(1)= 1。

したがって、F(N)= 2 ^ n個

public class Solution {
    public int JumpFloorII(int target) {
         int a=1;
        if(target==1)
            return 1;
        else
        for(int i=1;i<target;i++){
            a=a*2;
        }
        return a;
    }
}

太行8、そのブラシは、より多くの質問がコードに個々のアイデアを行使することができないので、実際には、上記の式の方法に比べて私は、達成するための簡単なコードを好みます

import java.util.*;
public class Solution {
    public int JumpFloorII(int target) {
        if (target <= 2) {
            return target;
        }
        int[] dp = new int[target + 1];
        Arrays.fill(dp, 1); //初始化每一种都可以直接从 0 跳到 n
        dp[0] = 0; //从 0 跳到 0 为 0 种,因为 n = 0,没法跳
        for (int i = 2; i <= target; i++) {
            for (int j = i - 1; j >= 1; j--) {
                dp[i] += dp[j]; //第 n 个状态是由前 n - 1 种状态推导出来,就是累加!
            }
        }
        return dp[target];
    }
}

これは、(N)Fそれ直接= F(N-1)+ F(N-2)+ ... F(1)+1コード実装であります

import java.util.*;
public class Solution {
    public int JumpFloorII(int target) {

        if(target<=2)
            return target;
        else{ 
            int [] arr=new int[target+1];
            
            Arrays.fill(arr,0);
            arr[0]=0;
            arr[1]=1;
            for(int i=2;i<=target;i++){
                
                for(int j=i-1;j>=1;j--)
                {
                    arr[i]=arr[j]+arr[i];
            
                }
                arr[i]=arr[i]+1;
            }
            return arr[target];
        }
    }
}

次に、私はこれをf(N)= F(N-1)+ F(N-2)であると考え変更+ ... +以前のバージョンの1つの直接的な実装は、直接ではありません

公開された13元の記事 ウォンの賞賛0 ビュー841

おすすめ

転載: blog.csdn.net/kelexing4/article/details/105355723