用 Python 实现座位预订管理器的程序

pythonserver side programmingprogramming更新于 2025/12/13 6:04:17

假设我们必须设计一个系统来管理 n 个座位的预订状态。座位编号从 1 到 n。因此,我们必须实现 SeatReserveManager 类,并使用这些函数 −

  • 构造函数以 n 作为输入,并初始化将管理从 1 到 n 编号的 n 个座位的对象。最初所有座位都可用。

  • reserve(),这将获取编号最小的未预订座位,然后预订它,并返回其编号。

  • unreserve(seatNumber),这将取消预订具有给定 seatNumber 的一个预订座位。

因此,如果输入如下

  • obj = SeatReserveManager(7)

  • obj.reserve()

  • obj.reserve()

  • obj.reserve()

  • obj.unreserve(2)

  • obj.unreserve(5)

  • obj.reserve()

  • obj.reserve()

则输出为 1、2、3、2、5,最初预留三个座位 1、2、3,然后取消预留 2 和 5,但 5 尚未预留,然后预留 5。

为了解决这个问题,我们将遵循以下步骤 −

  • 定义Constuctor() 。这将需要 n

  • current_seat := 0

  • empty_seats := a new list

  • 定义一个函数 reserve() 。这将需要

  • 如果 empty_seats 的长度 > 0,则

    • s := empty_seats 的最小值

    • 从 empty_seats 中删除 s

    • 返回 s

  • current_seat := current_seat + 1

  • 返回 current_seat

  • 定义一个函数 unreserve()。这将占用 seatNumber

  • 在 empty_seats 末尾插入 seatNumber

示例

让我们看看下面的实现以便更好地理解 −

class SeatReserveManager:
   def __init__(self, n):
      self.current_seat = 0
      self.empty_seats = []

   def reserve(self):
      if len(self.empty_seats) > 0:
         s = min(self.empty_seats)
         self.empty_seats.remove(s)
         return s
      self.current_seat += 1

      return self.current_seat

   def unreserve(self, seatNumber):
      self.empty_seats.append(seatNumber)

obj = SeatReserveManager(7)
print(obj.reserve())
print(obj.reserve())
print(obj.reserve())
obj.unreserve(2)
obj.unreserve(5)
print(obj.reserve())
print(obj.reserve())

输入

obj = SeatReserveManager(7)
print(obj.reserve())
print(obj.reserve())
print(obj.reserve())
obj.unreserve(2)
obj.unreserve(5)
print(obj.reserve())
print(obj.reserve())

输出

1 2 3 2 5

相关文章


有用资源