繁体   English   中英

C编程语言,最短路径

[英]C programming language, shortest path

我正在编写代码以查找两点之间的最短距离。 到目前为止,我的代码运行良好。 我的意思是它找到了他们应该经过的距离和路径。 我需要打印此信息,但是我应该执行打印功能。 它的工作方式是这样的:例如,起始点是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现在假设它们之间没有任何中间值。 这就是我应该打印的内容。 我真的很感谢您的帮助,建议您可以给我

Warshall-Floyd算法(由OP使用)具有一种版本,该版本除了可以确定图的节点之间的距离之外,还可以确定路径:

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

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

这听起来像递归将是执行此操作的最佳方法。 如果已经可以找到最短路径,则假定您已编写了一个函数来查找2点之间的最短路径。 也许您可以递归地分解列表,找到最短路径,然后将该点附加到列表中。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM