我正在創建一個允許預訂特定數量的房間/座位的預訂系統。假設用戶可以預訂編號爲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會搜索一個足夠大的塊來滿足請求;在如何選擇區塊方面存在不同的折衷(例如,選擇適合的第一個,選擇適合的最小的,選擇最大的),並且不存在任何處於最佳狀態的策略。 –