如同楼上所说,用有向图处理。
数据结构可以用二维数组a
来维护,只填充1
或0
。
如一共有12
个节点,那应该是是一个12 x 12
的二维数组。
假设i为横坐标,j为纵坐标,如果 a[i][j] === 1
,标识,节点i
可以走向节点j
,如果a[i][j] === 0
,标识,节点i
无法可以走向节点j
。反之a[j][i]
为节点j
是否可以走向节点i
12个节点有点多,我们以4个节点为例解释
![image image](/img/bVcKZpR)
如图,用他们的有向图结构定义如下,
const map = [
[0, 1, 1, 0],
[0, 0, 0, 0],
[0, 1, 0, 1],
[0, 1, 0, 0],
];
如果在节点1,那么就取节点1可走的下一步节点列表
const nexts = getNext(0); // 返回 [1, 2]
function getNext(currentNode) {
return map[currentNode]
.map((value, index) => value ? index : null)
.filter(item => item !== null)
}
依次类推,挨个查找,直到终点
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…