安全プランを証明する:ジャンプが質問に階段

階段をジャンプベース

タイトル

カエルは、クラス1レベルにジャンプすることができ、あなたはまた、レベル2に飛び乗っすることができます。カエルはどのように多くのジャンプ(別の計算異なる結果の順序)は、n級レベルの合計を求めて飛び込みました。

問題解決のためのアイデア

この問題は2つの方法があり、N番目のステップジャンプので、フィボナッチ数列の搬送方法を改変要求され、最初のものは、第二は、Nである、ジャンプアップN-1番目のステップからなります上-2レベルの2つのグレードアップ。

次いで、2つ、F(N)= Fの全て(Nに、N-1段階のアプローチへの要求および方法にN-2の2つのステップに変換される方法のN番目のステップにシーク1)+ F(N-2)、唯一の違いは、初期値は、初期値がここにあることです

F(1)= 1; F(2)= 2

あなたはボーエンを読むフィボナッチ事の安全オファーシリーズを証明する結果を達成するための二つの方法、具体的な言及保存前再帰と非再帰を使用することができます。

 

異常なジャンプ階段

タイトル

カエルは、クラス1レベルにジャンプすることができます。また、レベル2に飛び乗っすることができます...... nはまた、ステージの上にジャンプすることができます。カエルはどのように多くのジャンプのn級レベルの合計を求めて飛び込みました。

問題解決のためのアイデア

異常なジャンプステップは、それ以下のステップのいずれかから到達することが可能であり、唯一のN-1およびN-2の2つのステップによって到達することができないN番目のステップのステップジャンプの通常バージョンに対する変更します

すべてのF(N)= F(N-1)+ fは(N-2)+ F(N-3)+ ... + F(2)+ F(1)+1、直接最後のステップからです最初のステップは、導出が続く、N番目のステップ0にこのケースを調整しました。

F(N)= F(N-1)+ F(N-2)+ F(N-3)+ ... + F(2)+ F(1)+1、F(N + 1) = F (N)+ F(N-1)+ F(N-2)+ F(N-3)+ ... + F(2)+ F(1)+1 = 2 * F(N)

F(1)= 1、F(2)= 2 = 2 * F(1)

もちろん、あなたはまだ解決するために、再帰と非再帰的な二つの方法を使用することができます

コード

 再帰

1      公共 INT JumpFloorII(int型のターゲット){
 2          であれば(ターゲット== 1 ){
 3              リターン 1 4          } {
 5              リターン 2 * JumpFloorII(ターゲット1 )。
6          }
 7      }

 

 

非再帰

1      公共 INT JumpFloorII(int型のターゲット){
 2          INT [] = SaveDataを新しい INT [ターゲット+ 1 ]。
3          SaveDataを[1] = 1 4          のためにint型 I = 2; iは=ターゲットを<; iは++ ){
 5              SaveDataを[I] = 2 * SaveDataを[I-1 ];
6          }
 7          戻りSaveDataを[ターゲット]。
8      }

 

おすすめ

転載: www.cnblogs.com/huanglf714/p/11106149.html