如图所示,有一个带有Homes和PowerStations的2D网格。找出一种算法,为每个家庭找到最近的发电站。 我知道如何编写蛮力的一个,复杂度为O(m * n),其中m是住宅数量,n是发电站数量。但是,有人能提供更好的解决方案吗(可以假设发电站经常以这种方式定位)
答案 0 :(得分:1)
如果输入是网格,请执行BFS。
首先,在队列中插入所有电站。然后像往常一样进行BFS稍作修改:你必须记住从哪个初始发电站访问每个添加的方块。
使用此算法,您可以自然地使用最近的发电站到达每个房屋。
复杂性为O(s^2)
。其中s
是网格的一面。