我有一幅土地和水的二維地圖,如下所示(l
代表土地和w
代表水)。尋找與水的最短距離
lllwwwlll
lllwllllw
lllllllww
lllllllll
對於每塊地塊,我想知道它與最近的水瓦的距離。水平移動,垂直移動和對角移動均可計爲一個距離。
321www111
321w1111w
3211121ww
322222111
現在我使用的是算法,像這樣:
foreach tile in map
if isWater(tile)
tile.distanceFromWater = 0
else
radius = 1
while !hasWaterAround(tile, radius)
radius++
tile.distanceFromWater = radius
這種方法的工作原理,但它比較慢,尤其是當有很少的水磚。
是否有更快的算法來查找每個地塊與水的距離?
檢查A *方法[wiki](https://en.wikipedia.org/wiki/A*_search_algorithm) – fl00r