【发布时间】:2010-10-25 08:20:59
【问题描述】:
我正在尝试查找网格中 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 中完成)。
【问题讨论】: