【发布时间】:2012-08-01 13:20:10
【问题描述】:
假设我想在 00:00–00:59 期间安排一系列事件。我将它们安排在整分钟(00:01,从不 00:01:30)。
我想在那段时间内将它们尽可能地分开,但我事先不知道在那一小时内我总共会有多少事件。我今天可以安排一个活动,明天再安排两个。
我脑子里有一个明显的算法,我可以想出蛮力的方法来实现它,但我相信有人知道更好的方法。我更喜欢 Ruby 或我可以翻译成 Ruby 的东西,但我会尽我所能。
所以我脑子里能想到的算法:
事件 1 刚刚在 00:00 结束。
事件 2 在 00:30 结束,因为那个时间离现有事件最远。
事件 3 可能在 00:15 或 00:45 结束。所以也许我只选择第一个,00:15。
事件 4 然后在 00:45 结束。
事件 5 在 00:08 左右结束(从 00:07:30 向上取整)。
等等。
所以我们可以查看每对花费的分钟数(例如,00:00–00:15、00:15–00:30、00:30–00:00),选择最大的范围(00:30– 00:00),除以二并取整。
但我相信它可以做得更好。分享!
【问题讨论】:
-
如果您必须添加新的活动,您能否重新安排已安排的活动?
-
@RomanSaveljev Nupe,一旦安排,就无法重新安排。
-
为什么事件 2 应该在 0:30 而不是 01:00 (00:59)?还是应该?
-
罗曼:你说得对。我会将问题编辑为 00:00–00:59 而不是 00:00–01:00。
标签: algorithm scheduling