1

以下で説明するように、グリッド構造の最短経路を見つけるために、フロイドのアルゴリズムを実装する方法を数日間理解しようとしています。このようなものをどのように実装するかについて、誰かが私を正しい方向に向けることができますか? ありがとう。

入力:

  • 開始/終了座標
  • ユーザー入力は 0 から 10 の間である必要があります。
  • 障害物の数
  • 左上と右下の障害物座標

出力:

  • 通過するすべての座標を示すパス
  • int としての距離

制限:

  • 障害物を重ねることはできません
  • Start と End は、長方形の障害物内には設定できません
  • パスには、長方形のエッジに沿った移動を含めることができますが、それらを通過することはできません
  • パスは、斜めではなく、水平および垂直にのみ進むことができます
  • 隣接する 2 つの頂点間の距離は 1

121x121 配列の条件を生成するのに助けが必要です。

これは私がこれまでに持っているものです。

for(i=1;i<=n;i++) { 
   for(j=1;j<=n;j++) { 
         if( edge exists from i to j ) W[i][j] = 1; 
               // distance=1 if nodes are adjacent 
         else if ( edge does not exist from i to j ) W[i][j] = inf; 
              // distance=inf. if nodes do not meet 
         else if ( i = j ) W[i][j] = 0; // distance=0 if i=j 
   } 
}
4

1 に答える 1

2

http://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm この疑似コードを使用してアルゴリズムを実装するだけです (実際の C++ コードとあまり区別しないでください (かなり単純なアルゴリズムです)。 Wiki リンクは、最短経路再構成のアルゴリズムも提供します. グリッドを扱っているので、単純な息優先検索の実装を検討していただけますか. ハハ これは、このフォーラムでの私の最初の投稿です :)

于 2012-08-16T00:18:32.093 に答える