Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình triển khai trình quản lý đặt chỗ ngồi bằng Python

Giả sử chúng ta phải thiết kế một hệ thống quản lý trạng thái đặt chỗ của n ghế. Các ghế được đánh số từ 1 đến n. Vì vậy, chúng tôi phải triển khai lớp SeatReserveManager, với các chức năng này -

  • Hàm tạo lấy n làm đầu vào và khởi tạo đối tượng sẽ quản lý n chỗ ngồi được đánh số từ 1 đến n. Ban đầu tất cả các ghế đều có sẵn.

  • Reserve (), thao tác này sẽ tìm nạp ghế chưa đặt trước được đánh số nhỏ nhất, sau đó đặt trước và trả về số của nó.

  • unreserve (seatNumber), điều này sẽ không bảo tồn một chỗ đã đặt trước với givenseatNumber.

Vì vậy, nếu đầu vào giống như

  • obj =SeatReserveManager (7)

  • obj.reserve ()

  • obj.reserve ()

  • obj.reserve ()

  • obj.unreserve (2)

  • obj.unreserve (5)

  • obj.reserve ()

  • obj.reserve ()

thì đầu ra sẽ là 1, 2, 3, 2, 5, ban đầu đặt trước ba ghế 1, 2, 3, sau đó chưa đặt trước 2 và 5 nhưng chưa đặt trước 5, sau đó đặt trước 5 chỗ tiếp theo.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Định nghĩa Constuctor (). Điều này sẽ mất n

  • current_seat:=0

  • void_seats:=a new list

  • Định nghĩa một hàm dự trữ (). Điều này sẽ mất

  • nếu độ dài của void_seats> 0, thì

    • s:=tối thiểu là trống_số

    • xóa s khỏi blank_seats

    • trả lại s

  • current_seat:=current_seat + 1

  • trả về current_seat

  • Định nghĩa một hàm unreserve (). Điều này sẽ có số ghế

  • chèn số ghế vào cuối chỗ trống

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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())

Đầu vào

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

Đầu ra

1 2 3 2 5