算法设计。最佳,最有效的解决方案

时间:2014-06-16 01:58:04

标签: algorithm recursion

我有一个小问题,我想解决。我想提出最佳解决方案,我认为递归可能是这里的最佳选择。如果您认为我的解决方案是理想的,或者您认为有更好的方法,请告诉我。

问题在于: 我有一份城市名单。我想要的算法是确定一个城市离华盛顿特区的度数。每个城市都有一系列通过它的高速公路。如果一个城市与华盛顿特区共用任何高速公路,那么它距离它有1度。如果一个城市没有与华盛顿特区共用一条高速公路,但是与华盛顿特区的一个城市共用一条高速公路,那么这个城市就在2度以及儿子。

我正在考虑创建一个高速公路列表,每条高速公路应该列出它经历的所有城市。然后我穿过经过华盛顿特区的所有高速公路,然后在每条高速公路上看看它经过的所有城市,然后递归检查每个城市,看看最终高速公路将进入华盛顿特区,这样我就能得到度数。

你会如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

这是经典的,最短的路径问题(wiki)。

城市是顶点,它们之间的高速公路 - 边缘,度数 - 从城市到华盛顿特区的最短路径。

答案 1 :(得分:0)

您想要构建一个图表,其中节点是城市,并且当且仅当有连接A和B的高速公路时,城市A和B之间存在无向边。然后度数是a的长度。各个城市之间的最短路径(所有边缘长度为1)。你可以通过广度优先搜索找到它。

如何枚举边缘?对于每条高速公路,只需使用两个嵌套循环即可找到所有城市对。