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