【问题标题】:Minimization using a Greedy Algorithm使用贪心算法最小化
【发布时间】:2015-10-18 07:14:16
【问题描述】:
有一个问题,即有 n 个房子 a1,...an 在一条直线上。您想建造设施,使每栋房屋与设施的距离最多为 X。有 p 个位置 b1,...bp 可以建造设施。
我试图找出一个贪心算法来确定可以建造的最小设施数量是多少。
我将如何解决这个问题?
【问题讨论】:
标签:
algorithm
greedy
minimization
【解决方案1】:
对于每个位置 (B1,...,Bp),创建一个列表,其中包含距该位置 X 距离内的房屋。
创建最初包含所有房屋的房屋列表(我们将此列表称为“NeedToCover”)。
现在查看每个位置的列表,并确定哪个位置的列表涵盖了“NeedToCover”列表中最多的房屋。这将是您建造设施的地点。
建造设施后,移除“NeedToCover”中您刚刚选择的那个位置所覆盖的所有房屋。
对“NeedToCover”中的剩余房屋和剩余位置重复上述步骤,直到“NeedToCover”为空,这意味着所有房屋都在距离设施 X 的范围内。
(这个算法是贪心的,因为每次你都“不考虑未来”从剩余房屋中选择覆盖最多房屋的位置。)