我需要一些聪明且相当简单的解决方案来解决我的问题 - 省份形状生成。假设该映射是矩阵 NxM。每个单元格由自然数表示。0 表示该图块不属于任何省份。数字 1 表示它属于省 nr 1,nr 2 表示小区属于省 nr 2... 等等。
考虑这张 4x4 的地图:
0000
0000
0000
0000
这张地图代表了 16 个不属于任何省份的图块。
这是包含 1 个省份的地图:
0010
0111
0100
0000
这是大小为 5 的省,id = 1。它没有邻居。
考虑 3 个省份:
1133
2100
2200
2000
所以省 1 是 2 和 3 的邻居。省 3 只是 1 的邻居,省 2 只是 1 的邻居。还有 7 个不相关的图块。
我的问题是:我想在地图 NxN 上生成 k 个省份。还有一些简单的规则:
- 有省的最大大小和省的最小大小(例如 min = 2, max = 10)
- 省的所有瓷砖都应该连接(垂直或水平,但不是角落)
无效省份示例(未连接):
1100
0000
0011
0000
- 不应该有飞地(省内省)
- 形状应该是随机的
我试图通过洪水填充修改来实现它,但它有一些缺点。我很高兴听到一些想法或任何帮助。地图可以是 300x300,有 200 个或更多省份,所以它也应该是一些聪明的算法。