首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用贪心算法的最小化

使用贪心算法的最小化
EN

Stack Overflow用户
提问于 2015-10-18 15:14:16
回答 1查看 145关注 0票数 0

这里有一个问题,有n个房子在一条直线上,a1,...an。您希望构建这样的设施,即每个房屋与设施的最大距离为X。有p个地点b1,...bp,这些设施可以建造。我正在尝试一个贪婪的算法来计算出可以构建的最小设施数是多少。

我该如何着手解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2019-04-09 05:58:48

对于每个位置(B1、...、Bp),创建一个列表,其中包含距离该位置X距离内的房屋。

创建一个房屋列表(让我们将此列表称为"NeedToCover"),该列表最初包含所有房屋。

现在检查每个位置的列表,并确定哪个位置的列表覆盖了"NeedToCover“列表中最多的房屋。这将是您将在其中建立设施的位置。

在构建设施之后,删除"NeedToCover“中您刚刚选择的位置所覆盖的所有房屋。

对"NeedToCover“中的其余房屋和其余位置重复上述步骤,直到"NeedToCover”为空,这意味着所有房屋都在距离设施的X距离内。

(这种算法是贪婪的,因为每次您都是在“不考虑未来”的情况下从剩余的房屋中挑选覆盖最多房屋的位置。)

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

https://stackoverflow.com/questions/33195311

复制
相关文章

相似问题

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