首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最小里程电动汽车需要通过每个城市

最小里程电动汽车需要通过每个城市
EN

Stack Overflow用户
提问于 2020-12-09 02:16:55
回答 1查看 84关注 0票数 3

我有点被这个任务卡住了。

我们有一个矩阵,其中包含每个城市(60个城市)之间的距离。我们必须开着电动车经过每个城市至少一次。每个城市都有一个汽车充电点。我们可以在一个城市停留的次数没有限制。

我必须找到一次充电的最小里程,这样我们才能通过每个城市。

我应该如何面对这个任务?

EN

回答 1

Stack Overflow用户

发布于 2020-12-09 03:22:03

您需要的关键概念是优先级队列,它通常是用堆实现的。这是一种数据结构,它允许你将具有某种权重的东西放入其中,然后取出权重最小的东西。

让我们也使用一组东西。

现在的想法是这样的。我们从某个地方开始。我们有一个去另一个城市的优先队列。我们总是关注到达那个城市的最短距离的车程。如果它到达了一个对我们来说是新的城市,我们会将它添加到我们可以到达的城市中,如果这比我们看到的任何其他城市都要开更长的路,我们就会更新我们的里程。

一旦我们访问了所有的城市,我们就完成了。

下面是伪代码。

代码语言:javascript
复制
choose a start_city
initialize set visited_cities
initialize priority queue named queue to (0, start_city)
initialize min_range = 0

while len(visited_cities) < number of cities:
    (distance, city) = queue.pop()
    if city not in visited_cities:
        min_range = max(min_range, distance)
        visited_cities.add(city)
        for other_city in all cities:
            if other_city not in visited_cities:
                queue.add(distance from city to other_city, other_city)

min_range is the answer
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65204577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档