ブルーブリッジカップ39のステップ

オンライン答えを書き、犬の糞は同じです。私は立つことができませんでした。書き込み
説明は以下の
暁明はちょうど演劇を残して、映画「39ステップ」を見終わって、彼は講堂の前でステップ数を数えて、39であることを起こります!

站在台阶前,他突然又想着一个问题:

如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。
那么,上完39级台阶,有多少种不同的上法呢?


请你利用计算机的优势,帮助小明寻找答案。

これは明らかに、動的プログラミングの問題です。まあ動的計画。我々はそれについて考えることができます。n層のステップに進むには、それは状況に応じて層から知っている可能性のn-1とn-2層はそれを来たではないでしょうか?

この問題は、のFIBステップは、N-1およびN-2からのステップに渡される列の数との差であり、現在のレベルは、肯定的な手順が逆に達します。
私たちは、抽象n次の階段の数に問題を変換することができ、N-1、N-2倍階段の到着順序の数は左+階段に到達するために=右足に達します

上記の式が転送されるので、使用されるint [] [] DP =新しいすることができる INT [N] [2]、 左右の足の各層工程の到着を示すために。
左足の右DP [K] [0]のために設けられDP [K] [1]。
手動プロセスの最初の再帰的書き込みによるまず、境界条件、最初の2つの層。

ありそう
[1] = [0] DPは //が0 右に到達する第1の左の足のため、それは、不可能である
[0] DP [0] = 1; // この層は左側に達します。
DP [1] [1] = 1; //上層が左足に到達し、この前に右足となり、さらに、
DP [1] [0] = 1; // ステップから始まる2つの段階における左足進むと
@どこへ行くか分からない再帰よりも高いで複雑、うではないStackOverflowの
ための(int型I = 2; I <レイヤ; I ++){
// 1右です。
DP [I] [1] = DP [I- 1] [0] + DP [I-2] [0];
DP [I] [0] DP = [1-I] [1] + DP [I-2] [1];。。。
}
[層- DPを返します1] [1]。

出版元の記事 ウォンの賞賛0 ビュー15

おすすめ

転載: blog.csdn.net/qq_42499133/article/details/104516840