在Python中实现座位预订管理器的程序
假设我们必须设计一个管理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。
要解决此问题,我们将遵循以下步骤−
- 定义constructor()。将以n为参数
-
current_seat:= 0
-
empty_seats:=一个新列表
-
定义一个函数reserve()。将以n为参数
-
如果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