我得到了一个有两分的网格。我想计算每个点在另一个点之前可以达到的平方量。目前我实施了FloodFill-Algoritm,它可以计算出一个点可以达到的平方量。
如何更改该算法以对两个点进行“泛滥”,或者至少一个接一个地进行“泛滥”?
答案 0 :(得分:2)
“每个点可以在另一个点之前到达”是什么意思?
在我看来,你需要进行BF搜索。像这样使用FIFO队列:
设p1和p2为两点的位置。
让f成为队列中的第一个元素,然后是最后一个元素。最初f = 0,l = 1.设Q为队列。
Q[f] = p1
Q[l] = p2
while ( f <= l )
{
poz = Q[f];
++f;
for each neighbour poz' of poz
if poz' hasn't been marked yet
{
mark poz'
add poz' to Q: Q[++l] = poz
}
}
Q需要是网格的大小(行x列)。您可以使用两个矩阵:一个位置p1可以到达,另一个位置p2可以到达,或者您可以使用一个矩阵并标记正方形p1到达正数,正方形p2到达负数。如果你对他们遇到的地方感兴趣,你只需要检查你是否要从负值(poz negative和poz'正面)标记一个正值,或者相反。这基本上会轮流进行泛滥:从p1泛滥一个方格,然后从p2泛滥,然后从p1泛滥,再从p2泛滥,依此类推。