在3个弦向量中寻找连接

Finding connections in 3 vectors of string

本文关键字:寻找 连接 向量 3个      更新时间:2023-10-16

我用c++写了一些代码,它可以找到两个城市之间由道路或航班连接的最短路径。城市之间可以通过直航或间接航班连接。用户可以这样输入航班:

AAA AAG 300
AAA AAB 1
AAA AAG 298
AAB AAC 1
AAB AAG 297
AAC AAD 1
AAC AAG 296
AAD AAE 1
AAD AAG 295
AAE AAF 1
AAE AAG 294
AAF AAG 1

第一个字符串为出发城市,第二个字符串为目的地,数字为航班时间。我将这些值存储在3个向量中:

   vector<string> leavingCities;
   vector<string> destCities;
   vector<int> flightTimes;

我很难在这些向量中找到直飞航班——我的意思是有时从AAA到AAG的直飞时间比通过AAB、AAC、AAD、AAE和AAF的直飞时间要大得多,然后我必须选择更短的路线并存储我旅行的城市。有没有办法找到最短的时间和路线?航班名单可以变化,不必像这样。也许有更好的容器来存储这样的数据?

你真的应该把你的问题分解成理解你将如何解决它,然后进入代码。如果你不知道如何解决它,通常只是写代码是没有用的。

首先,你的问题可以被归类为在图中寻找最短路径算法。维基百科上有一整页的内容,但Dijkstra的算法可能是最适合你的。

一旦你理解了它是如何实现的,你就可以开始实现它了。如果你能使用它们,有很多不错的图形库,比如Boost。图,但我怀疑作为作业,你会被要求自己从头开始实现它。然而,作为一个没有经验的程序员,我不建议看Boost源代码——它们相当可怕,尽管一旦你有了更多的经验,这是一个很好的学习方式。

好运

使用Dijkstra算法查找最短路径