タイトル説明
カエルは、クラス1レベルにジャンプすることができます。また、レベル2に飛び乗っすることができます... nは、それはまた、ステージ上でジャンプすることができます。カエルはどのように多くのジャンプのn級レベルの合計を求めて飛び込みました。
問題解決のためのアイデア
ダイナミックプログラミング
公共 INT JumpFloorII(int型のターゲット) { INT [] DP = 新しい INT [標的]。 Arrays.fill(DP、 1 )。 以下のために(INT ; I <ターゲットI ++ I 1 = ) のための(INT J = 0; J <I、J ++ ) DP [I] + = DP [j]を。 戻り DP [ターゲット-1 ]。 }
数学的導出
ジャンプ階段N-1、N-2二段のn-3からジャンプアップすることができる、ステージアップレベル1からジャンプすることができ...、次いで
F(N-1)= F(N-2)+ F(N-3)+ ... + F(0)
また、ジャンプn個のステップは、レベル1レベルN-1からジャンプアップすることができ、ステージ2は、N-2 ...アップステージからジャンプすることができます
F(N)= F(N-1)+ F(N-2)+ ... + F(0)
利用可能要約
F(N) - F(N-1)= F(N-1)
その
F(N)= 2 * F(N-1)
したがって、F(n)は、幾何学的配列であります
公共 INT JumpFloorII(int型のターゲット){ リターン(INT)Math.pow(2、ターゲット- 1 )。 }