我想知道如何创建算法来解决以下问题。 在下图中,我有一个0,1和负1的矩阵。负1是我的起点和我的目标点。我开发了一个无法正常工作的泛洪填充算法。事实上,它给了我最短的路径。 它检查北,东,西和南的自由空间(0)。
matrix[x+1, y]
matrix[x-1, y]
matrix[x, y+1]
matrix[x, y-1]
它创建了蓝色路径,而不是按我的意愿工作。 我想用Red创建路径。 你知道我怎么能实现这种算法吗?
在这个例子中,方向是西北方向。
答案 0 :(得分:0)
好吧,如果你真的在使用泛洪填充算法,那么你认为我认为过于复杂。
可在此处找到相对简单快速的算法:http://www.codeproject.com/Articles/16405/Queue-Linear-Flood-Fill-A-Fast-Flood-Fill-Algorith
如果您不希望填充太多的瓷砖/像素,那么实现可行的递归填充填充非常容易。维基百科也有很多算法:
http://en.wikipedia.org/wiki/Flood_fill
通常你要么使用堆栈或队列来跟踪目标“图像”中的非矩形区域,要么逐行填充,要么以“菱形”模式填充(首先尝试4个方向)当前像素,将那些已填充的像素排入队列。
你的问题并不适合这么好:)