タイトル:一部の悪魔は王女(P)をつかむと、ダンジョンの右下隅に彼女をロック。ダンジョンは、Nが室から成るxはMの二次元グリッドです。私たちの勇敢な騎士(K)は、もともと部屋の左上隅に置かれた、彼はダンジョンを通過し、王女を救うために悪魔と戦う必要があります。騎士の初期の健康ポイントは正の整数です。0以下の時に彼の健康ポイントならば、彼はすぐに死んでしまうだろう。他の部屋はどちらか空です(部屋が0である);(部屋の負の整数値が、その後、騎士は、健康上のポイントを失うことになる場合)健康ポイントを失うことになるこれらの部屋に入るときにキャバリアーズのよう一部の客室には、悪魔によって守られていますまたはポイントの騎士マジックボールの数(部屋は正の整数であれば、その後、騎士は、健康上のポイントを増加します)での健康増進が含まれています。できるだけ早く王女に到達するためには、時間の騎士は、右または下に一歩を移動することを決めました。
出典:https://leetcode-cn.com/problems/dungeon-game/
アクトワン:独自のエラーコード
思考:この問題は、各パスの最小値を見つけ、次にパスを観察することにより、最小値の最大値を選択することと等価である[ - - 2、5及び10、- 30 5]を、それが底部からのものである場合、及び合計し、その後、最低の結果は、-5で正しい結果を得ることはできませんが、トップダウンアプローチの解決を使用して、することができ、各レコードと最小値と現在および以前の解決時に上から下になく、値が、局所最適ソリューションは、最適解がグローバルであることを保証することはできません、しかし、慎重な分析がボトムアップのアプローチを向上させることができ、それぞれの時間が唯一の健康が必要の現在位置は、そのような局所最適ソリューションは、すなわちグローバルポイント何気に最適なソリューションを提供します。
この場合に続いて、トップダウンのアプローチが根本的な原因を解決することはできませんローカル最適なグローバル最適ではありません。
タイピングインポートリスト クラス:溶液 DEF > - :calculateMinimumHP(リスト[リスト[INT]セルフ、ダンジョン)INT: #行数、列 R&LT、C = (ダンジョン[0])lenのLEN(ダンジョン)、 #ダイレクト1行1列の最初の計算に元のデータを変更 #第1の経路と第2の用語と最小経路 ダンジョン[0] [0] = (ダンジョン[0] [0]、ダンジョン[0] [0]) のための I における範囲(1 、R&LT): K =ダンジョン[i]が[0] +ダンジョン[I-1 ] [0] [0] ダンジョン[I] [0] =(K、分(K、ダンジョン[I-1] [0] [1 ])) のための J での範囲(1 、C)。 K =ダンジョン[0] [J] +ダンジョン[0] [J-1 ] [0] ダンジョン[0] [J] =(K、分(K、ダンジョン[0] [J-1] [1。)]) のための P における範囲(1 、R&LT): のための Q における範囲(1 、C): #多数の前に M =ダンジョン[P]が[Q-1 ] #の行に番号 N- =ダンジョン[P-1 ] [Q] IF分(M [0] +ダンジョン[P] [Q]、M [1 ])>分(N [0] +ダンジョン[P] [Q]、N- [1 ]): ダンジョン[P] [Q] =(ダンジョン[P] [Q-1] [0] +ダンジョン[P] [Q]、分(M [0] +ダンジョン[P] [Q]、M [1 ]) ) それ以外: ダンジョン[P] [Q] =(ダンジョン[P-1]〜[Q] [0] +ダンジョン[P] [Q]、分(N [0] +ダンジョン[P] [Q]、N [1 ]) ) プリント(ダンジョン[P] [Q]) プリント(ダンジョン) リターン 1 ならダンジョン[-1] [ - 1] [1]> 0 他 -dungeon [-1] [ - 1] [1] +1 なら __name__ == ' __main__ ' : duixiang = ソリューション() A = duixiang.calculateMinimumHP([1、-3,3]、[0、-2,0]、[ - 3、-3、-3 ]) プリント()
アクトII:適切なコード
https://leetcode-cn.com/problems/dungeon-game/solution/dong-tai-gui-hua-by-powcai-8/