0

我正在编写代码来查找两点之间的最短距离。到目前为止,我的代码运行良好。我的意思是它找到了他们应该通过的距离和路径。我需要打印这些信息,但我应该做一个打印功能。它的工作方式是这样的:例如初始点是 4,最终点是 13。

我应该想出一个算法来检查它们的中间点。假设在 4 和 13 之间有一点:7

4--7--13 现在我需要检查它们之间的每一点,例如:

4--6--7--9--13 更具体地说,它将检查 4-6 和 6-7 以及 7-9 和 9-13 之间是否有一个点。因此,在下一次迭代中,它可能会形成另一个列表,例如:

4--2--6--7--5--9--17--13 现在假设它们之间不会有任何中间值。这就是我应该打印的。我真的很感激任何帮助,建议你可以给我

4

2 回答 2

2

Warshall-Floyd 算法(由 OP 使用)有一个版本能够确定除了图节点之间的距离之外的路径:

具有路径重构的 Floyd-Warshall 算法

但是,必须注意,这并不是解决最短路径问题的最佳算法。

于 2012-06-11T18:32:23.880 回答
1

这听起来像递归将是做到这一点的最佳方式。如果它已经可以找到最短路径,我假设您编写了一个函数来查找 2 点之间的最短路径。也许您可以递归地分解列表,找到最短路径并将该点附加到列表中。

编辑,对不起,我误读了您的问题,您需要找到中点。将递归函数传递给整个点列表并找到一个中点。如果存在,请将其添加到列表中。如果没有中点,则不要附加任何内容。继续调用这个函数,直到你到达基本情况,这应该是列表中的 1 或 2 个点

于 2012-06-11T18:09:10.543 回答