【发布时间】:2016-04-02 01:08:48
【问题描述】:
我正在创建一个允许预订特定数量的房间/座位的预订系统。假设用户可以预订编号为 1-100 的座位/房间。我的讲师建议我使用一种算法来经济地划分预订数量,以便将未售出的座位保持在最低限度。例如,如果有 10 个座位可用:
用户 1 预订 4 个席位。给定(没有 1-4)。 用户 2 预订 1 个座位。给定(第 5 个)。 用户 3 预订 4 个座位。给定(没有 6-9)。 用户 2 然后取消。释放(第 5 条)。 用户 4 想要预订 2 个座位,但唯一可用的座位是 5 和 10(不在一起,所以他们不预订)。
我的讲师说这个问题存在一个通用算法,但记不住名字。我想这就像用于磁盘上数据的算法。
有什么想法吗? 非常感谢。
【问题讨论】:
-
相同的算法用于在 C 中实现
malloc()和free()。它们经常使用“freelists”——空闲的(内存)范围的链表。当有新请求进来时,会在 freelist 中搜索一个足够大的块来满足请求;如何选择块有不同的权衡(例如,选择第一个适合的,选择适合的最小的,选择最大的)并且没有一个策略是处处最优的。
标签: algorithm