有一个大小为 N x M的网格。一些细胞是由“0”表示的 岛屿,另一些是 水。每个水池上都有一个数字,表示在这个水池上建桥的成本。你必须找到所有岛屿可以连接的最低成本。如果一个单元共享一个边或一个顶点,那么它就连接到另一个单元。
什么算法可以用来解决这个问题?如果 N,M 的值非常小,比如说 NxM < = 100,那么什么可以用作蛮力方法?
示例 : 在给定的图像中,绿色单元格表示岛屿,蓝色单元格表示水,浅蓝色单元格表示应该在其上建立桥梁的单元格。因此,对于下面的图像,答案将是 17。
起初,我想把所有的岛屿都标记为节点,然后用一座最短的桥把每一对岛屿连接起来。这样问题就可以简化为最小生成树,但在这种方法中,我忽略了边缘重叠的情况。在下面的图片中,任意两个岛屿之间的最短距离是 7(用黄色标记) ,所以通过使用最小生成树,答案是 14,但是答案应该是 11(用浅蓝色标记)。