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

标签 algorithm recursion

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

问题来了: 我有一个城市列表。我想要的算法是确定一个城市与华盛顿特区的度数。每个城市都有一个经过它的高速公路列表。如果一个城市与华盛顿特区共享任何高速公路,那么它与其相差 1 度。如果一个城市不与华盛顿特区共享高速公路,但与华盛顿特区 1 度的城市共享高速公路,那么该城市就是 2 度,儿子。

我正在考虑创建一个高速公路列表,每条高速公路都应该有一个它经过的所有城市的列表。然后我循环遍历所有穿过华盛顿特区的高速公路,对于每条高速公路,我查看它经过的所有城市,然后递归检查每个城市,看看最终有一条高速公路会到达华盛顿特区,这样我就可以得到度数。

你会如何解决这个问题?

最佳答案

你要构建一个图,其中节点是城市,城市 A 和 B 之间有一条无向边当且仅当 A 和 B 之间有高速公路连接。那么度就是最短路径的长度(所有边的长度为 1)在各个城市之间。您可以使用广度优先搜索找到它。

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

关于算法设计。最佳,最有效的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24235778/

相关文章:

python-3.x - Python3中的CSV文件比较算法

algorithm - 网格数据结构

Perl递归技术?

algorithm - 使用递归关系分析时间复杂度

python递归列表问题

c++ - 递归查找子集

C++类设计: Covariance

c++ - 为什么键入三个非整数会导致此函数无限递归?

python - 使用回溯在 8x8 棋盘上实现骑士之旅

java - 了解递归阶乘中的 Java 行为