我需要弄清楚如何解决这个问题。我正在使用Java,但它现在并不重要。我不需要任何代码,因为我必须自己做,我只需要一些关于算法的建议,因为我找不到任何快速的方法来做到这一点。(我的解决方案在编译时花了太长时间)
问题是:
有4个城市。每个都有不同的路线从一个到另一个(总共16条路线)
从城市1到城市4不同于从城市4前往城市1(所有路线都是单向的),这就是他们有不同价值观的原因。
我有每条道路所需时间的列表,总共16个。实际上,当程序启动时,用户会输入列表,但您可以认为我现在有列表。
在我们获得所需的时间之后,用户选择一个开始和结束的城市,程序必须找到该旅行的最短持续时间。
示例:
0 18 15 8
18 0 7 3
7 16 0 19
10 14 19 0
这是旅行持续时间表。 i(行)x j(列),值显示从i到j city的行程持续时间。
当用户输入" 4 2"这意味着从城市4到城市2,作为答案的输出应该是14
但是当用户输入" 2 1"作为答案的输出应该是13(3 + 10)。首先从2市到3市3小时,从市4到市1是10小时,完全13小时。
因此,选择的路线不需要是直接路线,可以在两个城市之间使用任何数量的路线,但速度最快。
这张4x4桌子只是4个城市的一个例子。 (这也是我所有的)。该算法应适用于最多100个城市。用户将在填写表格之前键入城市数量,以确定每个城市之间的旅行持续时间。
我可能会找到4个城市的解决方案,但它不适用于100个城市。我也尝试过使用java的排列方法,但正如我所说,编译需要很长时间。然而,编译过程需要超过4秒。
抱歉我的这个漫长而无聊的问题,但我希望有人可以提出一个有用的建议。