我试图找到网格中 2 个节点之间的所有路径,并且路径必须从头到尾穿过所有节点。示例(开始 = S,结束 = E)
0 0 0
0 S 0
0 0 E
上面的答案是 2 条路径:(忽略 '.''s)
0-0-0
|.......|
0 S-0
|
0-0-E
0-0-0
|......|
0 S 0
|...|...|
0-0 E
我想过使用递归,但由于每次调用的高开销而放弃了......并决定使用堆栈的迭代方法。(有点像递归但不是......固定的内存开销)。该解决方案适用于大小(4x7)的网格,但在 8x8 网格上进行了尝试……但它没有在 4 小时内完成……这是有道理的,因为可能性的总数约为 3** 62(大约),因为不在边缘的每个节点都有 3 种可能的遍历方式......因此该解决方案失败了。
我想过将 8x8 网格分成 2 个,使用垂直和水平分割......但这会导致找到不太理想的路径。
有什么我想念的吗????可以做些什么来让它更快吗?我将发布我明天的解决方案(在 C 中完成)。