Iam尝试做一个程序,它给我们一个地图上的最短路径(地图是一个上面有矩形的图片。我的转折点是Rectangle的边缘点。有人能帮我找到这点上的最短路径吗?{ {0}}
正如你所看到的那样,它有起点和终点。必须从头到尾开始,路径必须从点开始。路径不能在矩形上,因为它是我的墙所以不能进入或超过它。 那么任何身体都可以帮助???
答案 0 :(得分:1)
如果效率不是问题而且简单的解决方案没问题,您可以考虑以下伪代码:
visited = new bool[N,M]
points = new List<Point>()
prev = new List<int>()
points.Add(Begin)
prev.Add(-1)
visited[Begin.X, Begin.Y] = true
for(i = 0; i < points.Length; i++)
p = points(i)
foreach neighbor of p
if neighbor is not wall && !visited[neighbor.X, neighbor.Y]
points.Add(neighbor)
prev.Add(i)
visited[neighbor.X, neighbor.Y] = true
if neighbor == End
// we are done, print path (without Begin and End)
j = i
while j != 0
print points[j]
j = prev[j]
return
// no solution found
(这只是Flood填充算法http://en.wikipedia.org/wiki/Flood_fill的修改。)