在3个字符串向量中查找连接

时间:2013-05-13 18:45:51

标签: c++ algorithm sorting vector stl

我用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的间接飞行要大得多,然后我必须选择更短的路线和存储我旅行过的城市。 有没有找到最短时间和路线的解决方案?航班列表可能有所不同,不一定要这样。 也许有一些更好的容器来存储这样的数据? 求你帮帮我。

2 个答案:

答案 0 :(得分:4)

你真的应该将你的问题分解为理解 你将如何解决它然后进入代码。如果你不理解你将如何解决它,通常只是编写代码将无济于事。

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

一旦了解了方法,就可以开始实施。如果你可以使用它们,那里有许多不错的图形库,例如Boost.Graph,但我怀疑作为一项任务,你将被要求从头开始实现它。但是,我不建议将Boost资源视为一个没有经验的程序员 - 它们非常可怕,尽管一旦你获得了更多的经验,这是一种很好的学习方式。

祝你好运

答案 1 :(得分:3)

使用Dijkstra's algorithm查找最短路径。

相关问题