二维整数数组,随机填充 1 和 0。我该怎么做才能始终有办法从一个角落到另一个角落?
2-Dimensional Array of ints, filled randomly with 1s and 0s. How do I make it so there is always a way to go corner to corner?
所以,这个项目应该是一种地牢穿越模拟器。它由随机生成的 5x5 数组 1 和 0 组成。最初,我用 1 和 0 随机填充每个 5x5 数组,其中 1 是您可以进出的空间,0 是墙壁。
问题是,数组的 1 和 0 被随机放置,目前无法保证玩家可以移动 up/down/left/right。没有对角线移动,我正在尝试找到一种方法来确保玩家始终可以从一个角移动到另一个角。可能只有一种方法可以朝一个方向移动,而没有办法到达另一个角落。角落始终为 1,因此玩家可以存在于那里。每个角落旁边的一个或两个索引也可以移动到。因此,如果您位于左上角,则始终可以向下 and/or 向右移动。你不能被困在那个地方。
示例:
1 1 0 0 1
0 1 0 1 1
0 0 0 1 0
1 0 1 0 1
1 0 0 1 1
如果玩家在左上角,他们可以向右移动,然后向下移动,但他们会被卡住。我试图找到一种方法来确保所有阵列都能够从一个角落移动到另一个角落。所以问题不仅仅是确保每个 1 都有一个相邻的 1,而且这些 1 最终会移向一个角落。
谢谢
这是一种方法。
- 从全 0 开始
- 把1放在角落里,然后把每一个1放到它们自己的集合结构中。
- 每次加1,先检查看看
- 如果有相邻的1。如果没有,则创建包含该 1 的集合结构。
- 如果有邻居
1
,则将新的1
添加到邻居集中。
- 如果相邻
1
属于不同的集合,则将这两个集合合并到同一个集合中。
。
- 继续,直到您要连接的所有角都在同一组中。
所以,这个项目应该是一种地牢穿越模拟器。它由随机生成的 5x5 数组 1 和 0 组成。最初,我用 1 和 0 随机填充每个 5x5 数组,其中 1 是您可以进出的空间,0 是墙壁。
问题是,数组的 1 和 0 被随机放置,目前无法保证玩家可以移动 up/down/left/right。没有对角线移动,我正在尝试找到一种方法来确保玩家始终可以从一个角移动到另一个角。可能只有一种方法可以朝一个方向移动,而没有办法到达另一个角落。角落始终为 1,因此玩家可以存在于那里。每个角落旁边的一个或两个索引也可以移动到。因此,如果您位于左上角,则始终可以向下 and/or 向右移动。你不能被困在那个地方。
示例:
1 1 0 0 1
0 1 0 1 1
0 0 0 1 0
1 0 1 0 1
1 0 0 1 1
如果玩家在左上角,他们可以向右移动,然后向下移动,但他们会被卡住。我试图找到一种方法来确保所有阵列都能够从一个角落移动到另一个角落。所以问题不仅仅是确保每个 1 都有一个相邻的 1,而且这些 1 最终会移向一个角落。
谢谢
这是一种方法。
- 从全 0 开始
- 把1放在角落里,然后把每一个1放到它们自己的集合结构中。
- 每次加1,先检查看看
- 如果有相邻的1。如果没有,则创建包含该 1 的集合结构。
- 如果有邻居
1
,则将新的1
添加到邻居集中。 - 如果相邻
1
属于不同的集合,则将这两个集合合并到同一个集合中。
。
- 继续,直到您要连接的所有角都在同一组中。