0
Tiles = {  
{0,0,0,0,0,0,0,0,0,0},  
{0,2,2,2,2,2,2,2,2,0},  
{0,3,0,0,2,4,2,2,2,0},  
{0,0,2,0,0,0,2,2,2,0},  
{0,0,2,2,2,0,2,2,2,0},  
{0,0,0,0,2,0,2,2,2,0},  
{0,0,2,2,2,0,2,2,2,0},  
{0,0,0,0,0,0,0,0,0,0}  
}

0はクリックできません、他はクリックできます、そうでなければ0は歩きます、他はそうではありません、私はタイル[3] [2](番号3)をクリックし、次にタイル[3] [6](番号4)をクリックします。 2タイルから歩行可能なタイルまで、問題は、最短の解決策は必要ないということです。代わりに、2つ以下のコーナー(回転)を持つ解決策が必要です。3日間かけてアルゴリズムを想像してグーグルで調べましたが、運が悪かったので、誰かに教えてもらえますか?それについての手がかりや記事、そして私はluaを使用していますが、他の言語はまだありがたいです。

4

1 に答える 1

1

次のルールを使用して、グリッドをグラフに変換します。

  • グリッド内のすべての歩行可能なタイルは、グラフ内のノードに対応します。
  • 2つのノードがグリッド内の同じ行または列にあり、グリッド内のそれらの間のすべてのタイルが歩行可能である場合、グラフでは2つのノードが接続されています(重み1)。

グラフの最短経路は、グリッド内のコーナーが最も少ない経路に対応します。

于 2012-06-25T21:15:14.687 に答える