安全offer8を証明:カエルのジャンプ階段

1.タイトル説明

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

2.アイデアや方法

  各ジャンプカエル2つだけのオプション:;ジャンプ又はステージ2は、n段目のラダーステップに到達し、この時小さなカエルレベル1ジャンプがn段目のラダーステップ、小さなカエルは、n-1段階第一段階では、この時間に達しますこれは、N-2-ステップですこれにより、nジャンプステップのプロセスは常にN-1前工程ジャンプ方法F総数に依存する(N-1)N-2及びフロントステップジャンプ方法合計F(N-2)。2つだけの可能性は、従って、F(N)F(=ためのn-1)+ F(N-2)。

  漸化式f(N)F(N-1)= + F(N-2):非常に精通し、フィボナッチ総和が確認され、1カエルジャンプグレードの一種であり、レベル2の2種類があります方法をジャンプし、5回の4のジャンプがあり、3×3つのジャンプ方法があります。

3. C ++コアコード

3.1再帰的(非効率的で、時間複雑性O(N 2))

1  クラスソリューション{
 2  公共3  INT jumpFloor(INTの数){
 4          であれば(数== 1 5              リターン 1 6          そう であれば(数== 2 7              リターン 2 8          {
 9              リターン jumpFloor(number- 1)+ jumpFloor(number- 2 )。
10          }
 11      }
 12 }。
コードの表示

3.2非再帰的(Oの時間複雑度(N))

1  クラスソリューション{
 2  公共3      INT jumpFloor(INTの数){
 4          であれば(数< 0 5          {
 6              戻り 0 ;
7          }
 8          であれば(数== 0 ||番号== 1 ||数== 2 9          {
 10              リターン番号;
11          }
 12          のint F1 = 1 13          INT、F2 =2 ;
14          int型の結果= 0 15          のためにint型 I = 3 ; iが<=番号; iが++ 16          {
 17              結果= F1 + F2。
18              = F1 、F2。
19              F2 = 結果。
20          }
 21          リターン結果。
22      }
 23 }。
コードの表示

参考資料

https://blog.csdn.net/qq_33022911/article/details/83536283

おすすめ

転載: www.cnblogs.com/wxwhnu/p/11407175.html
おすすめ