- 42 名前:40 mailto:sage [04/03/23 02:25 ID:BXdAOeDK]
- >>40
>次のレスに書くやり方がお勧め。 1,マップサイズの配列を用意し、移動前の位置に0、その他に-1を入力。 2,マップの左上から右下へカウンタでマスを進めていく(マップ全体)。 3,2の所でひとマス毎にそのマスの周りを調べる。 4,3の所で0以上の値があったらその値+進入ロスの値を2のマスに入力する。 3の所で0以上の値が複数あったなら小さい値の位置を選ぶ。 3の所で0以上の値があっても、その値+進入ロスの値が既に入力されている 値より大きいなら入力を行わない。共に移動歩数のかからない方を 選びたいから。 5,2~4を移動力分繰り返す。 この方法だと移動力が低い時はツリー方法の方が早いが、 移動力が高い時はこの方法の方が断然速くなる。 ツリーは4(移動できる方向数),16,64と累乗で掛かる時間が増えていくけど、 この方法は400(マップのマス目の数),800,1200と掛け算で増えていくので。
|

|