如何实现Floyd算法在具有矩形障碍的11x11网格上找到最短路径?

时间:2012-04-23 18:25:03

标签: c++ algorithm floyd-warshall

我一直试图弄清楚如何实现Floyd的算法几天,以找到网格结构中的最短路径,如下所述。谁能指出我正确的方向,我将如何实现这样的事情?感谢。

输入:

  • 开始/结束坐标
  • 用户输入必须介于0到10之间
  • 障碍物数量
  • 左上角和右下角的障碍物坐标

输出:

  • 显示通过
  • 传递的所有坐标的路径
  • 作为int的距离

限制:

  • 障碍不能重叠
  • 无法在矩形障碍物内设置开始和结束
  • 路径可以包括沿着矩形的边缘行进但从不穿过它们
  • 路径可能只是水平和垂直,而不是对角线
  • 两个相邻顶点之间的距离为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 
   } 
}

1 个答案:

答案 0 :(得分:2)

http://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm 只需使用这个伪代码来实现算法(它不应该与实际的C ++代码差别很大(这是一个相当简单的算法).Wiki链接还提供了最短路径重建的算法。 你会考虑实施一个简单的呼吸优先搜索,因为你正在处理一个网格。 哈哈这是我在这个论坛上的第一篇文章:)