算法(JS-React)
Algorithm (JS -React)
我目前遇到一个我无法解决的算法问题,我真的需要帮助。
这是总体布局:
- 项目放置在 4x4 网格内(从位置 0,0 到 3,3)。
- 物品有 3 种不同的状态,“已解锁”、“可解锁”和“已锁定[=46=” ]".
- 网格以单元格 (0,0) 作为“可解锁”启动。
- 当一个单元格被解锁(或点击)时,相邻(水平和垂直不是对角线)单元格变为“可解锁”。
- 单元格应连接到起点(单元格(0,0))。
- 可以取消分配单元格(再次“锁定”)。
- 如果一个未分配的(“锁定”)单元格有“未锁定”单元格与其相邻,它会变成“unlockable”而不是“unlocked”。
所以这是我面临的问题:
假设我已解锁单元格 (0,0)、(1,0)、(2,0)、(2,1)。
在这种情况下,锁定单元格 (2,0) 应该是不可能的,因为单元格 (2,1) 将失去与 (0,0) 的所有连接.
我怎样才能实现这样的逻辑,使细胞不能被锁定,除非这样做是安全的(下一个细胞仍然以某种方式连接到起点)?
如果这需要一些通用的算法类型,我不知道如何搜索它,请随时提供它的名称,以便我学习it.I没学过计算机科学,我'我是一个自学成才的学生。
执行此操作的标准方法是将网格视为 graph(一组顶点和边)并将其视为图形问题。单元格将是图形的顶点,由它们之间的水平和垂直边缘连接。您将跟踪哪些 cells/vertices 已解锁,与解锁单元格相邻的单元格可解锁,所有其他单元格均已锁定。
图形中的“切割顶点”或“连接点”是指如果移除该顶点,就会断开图形的连接。在允许锁定单元之前,您要确保单元不是未锁定单元中的切割顶点(因为这样做会断开未锁定单元的某些部分)。您可以只对解锁的单元格执行 Depth-First-Search 以找到它们的接合点,并在锁定之前检查要锁定的单元格是否不是这些点之一。
我目前遇到一个我无法解决的算法问题,我真的需要帮助。
这是总体布局:
- 项目放置在 4x4 网格内(从位置 0,0 到 3,3)。
- 物品有 3 种不同的状态,“已解锁”、“可解锁”和“已锁定[=46=” ]".
- 网格以单元格 (0,0) 作为“可解锁”启动。
- 当一个单元格被解锁(或点击)时,相邻(水平和垂直不是对角线)单元格变为“可解锁”。
- 单元格应连接到起点(单元格(0,0))。
- 可以取消分配单元格(再次“锁定”)。
- 如果一个未分配的(“锁定”)单元格有“未锁定”单元格与其相邻,它会变成“unlockable”而不是“unlocked”。
所以这是我面临的问题:
假设我已解锁单元格 (0,0)、(1,0)、(2,0)、(2,1)。
在这种情况下,锁定单元格 (2,0) 应该是不可能的,因为单元格 (2,1) 将失去与 (0,0) 的所有连接.
我怎样才能实现这样的逻辑,使细胞不能被锁定,除非这样做是安全的(下一个细胞仍然以某种方式连接到起点)?
如果这需要一些通用的算法类型,我不知道如何搜索它,请随时提供它的名称,以便我学习it.I没学过计算机科学,我'我是一个自学成才的学生。
执行此操作的标准方法是将网格视为 graph(一组顶点和边)并将其视为图形问题。单元格将是图形的顶点,由它们之间的水平和垂直边缘连接。您将跟踪哪些 cells/vertices 已解锁,与解锁单元格相邻的单元格可解锁,所有其他单元格均已锁定。
图形中的“切割顶点”或“连接点”是指如果移除该顶点,就会断开图形的连接。在允许锁定单元之前,您要确保单元不是未锁定单元中的切割顶点(因为这样做会断开未锁定单元的某些部分)。您可以只对解锁的单元格执行 Depth-First-Search 以找到它们的接合点,并在锁定之前检查要锁定的单元格是否不是这些点之一。