最短路径C#

时间:2014-02-09 12:42:22

标签: c# image-processing shortest-path

Iam尝试做一个程序,它给我们一个地图上的最短路径(地图是一个上面有矩形的图片。我的转折点是Rectangle的边缘点。有人能帮我找到这点上的最短路径吗?{ {0}}

正如你所看到的那样,它有起点和终点。必须从头到尾开始,路径必须从点开始。路径不能在矩形上,因为它是我的墙所以不能进入或超过它。 那么任何身体都可以帮助???

1 个答案:

答案 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的修改。)