问题描述
我正在制作一个使用六边形瓷砖来表示地图的游戏;瓷砖或六边形,每个都包含以列表形式指向其所有邻居的指针。地图可能如下所示:
大片的绿色区域是“大陆”,而小的黄色区域是“岛屿”,其余是普通水体,注意小块水可能被困在大陆内部。
大陆和岛屿始终是相邻的,从不接壤。玩家将在任何时候占据一个六角形。基本移动会将玩家从一个六角形移动到另一个六角形,前提是起点和目的地相邻,并且该移动不会将玩家从陆地六角形移动到水六角形。
“海港”是一个即将推出的功能,放置在大陆或岛屿的六角形中,它们允许玩家从港口移动到任何相邻的水六角形,这应该能够在陆地之间移动
问题: 我想在这样的地图中至少放置2个港口,以确保玩家始终可以从大陆到岛屿,反之亦然。
由于以下并发症,这比看起来更难:
- 如果将海港放在内陆水域的岸边,它们将毫无用处
- 大陆可能将海洋分成多个部分,因此港口可能不会被放置在右岸以发挥作用(在下面的示例中;H1 和 H2 不能完全通过水进行通信,而 H2 和 H3 可以)
因此,我欢迎任何关于在这些地图上放置港口的合适算法的清晰描述,任何伪代码都将受到高度赞赏