算法(JS-React)

Algorithm (JS -React)

我目前遇到一个我无法解决的算法问题,我真的需要帮助。

这是总体布局:

所以这是我面临的问题:

假设我已解锁单元格 (0,0)、(1,0)、(2,0)、(2,1)。

在这种情况下,锁定单元格 (2,0) 应该是不可能的,因为单元格 (2,1) 将失去与 (0,0) 的所有连接.

我怎样才能实现这样的逻辑,使细胞不能被锁定,除非这样做是安全的(下一个细胞仍然以某种方式连接到起点)?

如果这需要一些通用的算法类型,我不知道如何搜索它,请随时提供它的名称,以便我学习it.I没学过计算机科学,我'我是一个自学成才的学生。

执行此操作的标准方法是将网格视为 graph(一组顶点和边)并将其视为图形问题。单元格将是图形的顶点,由它们之间的水平和垂直边缘连接。您将跟踪哪些 cells/vertices 已解锁,与解锁单元格相邻的单元格可解锁,所有其他单元格均已锁定。

图形中的“切割顶点”或“连接点”是指如果移除该顶点,就会断开图形的连接。在允许锁定单元之前,您要确保单元不是未锁定单元中的切割顶点(因为这样做会断开未锁定单元的某些部分)。您可以只对解锁的单元格执行 Depth-First-Search 以找到它们的接合点,并在锁定之前检查要锁定的单元格是否不是这些点之一。