★★ Java の宿題ここで答えます Part 52 ★★
■ このスレッドは過去ログ倉庫に格納されています
0233デフォルトの名無しさん
2005/07/09(土) 01:28:50・その時点で、そこまでの累計距離の最も短い点から一歩進んでみる
・ただし、既に行った事のある点には行かない、無駄だから
第一ターン。とりあえず(1,1)から(2,1)(2,2)(1,2)に進んでみる。
第二ターン。(2,1)(2,2)(1,2)の累計距離を見て、一番短い2の(2,1)から上、右上、右にそれぞれ進む。
…が、(2,1)の上(2,2)は訪問済みなのでこれはスキップ。
第三ターン。(2,2)(1,2)(3,1)(3,2)の累計距離を見る。一番小さいのは3の(1,2)(2,2)(3,2)。
それぞれから上、右上、右に(訪問済の点は除いて)進む。
第四ターン。累計距離4の点は(3,1)(4,2)(1,3)。これらから進んでみる。以下同様。
この方法で、累計距離を配列に格納していく。ちなみに(4,4)には6が入る。
この配列の要素は、スタートからその点までの最小の累計距離に必ず等しくなる。
配列ができたら後ろ向きに進んでルートを求める。
(4,4)の値6から(4,4)の局所距離1を引けば5、(4,4)に接続する点で累計距離5の点2つが最短コースの可能性がある。
あとはひたすら可能性のある点全てから同様に進んでいけばいい。
■ このスレッドは過去ログ倉庫に格納されています