Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมที่จะใช้ตัวจัดการการสำรองที่นั่งใน Python


สมมติว่าเราต้องออกแบบระบบที่จัดการสถานะการสำรองที่นั่งจำนวน n ที่นั่ง ที่นั่งมีหมายเลขตั้งแต่ 1 ถึง n ดังนั้นเราจึงต้องใช้คลาส SeatReservManager ด้วยฟังก์ชันเหล่านี้ -

  • ตัวสร้างที่รับ n เป็นอินพุตและเริ่มต้นวัตถุที่จะจัดการ n ที่นั่งที่มีหมายเลขตั้งแต่ 1 ถึง n เริ่มแรกมีที่นั่งครบทุกที่นั่ง

  • Reserve() นี่จะดึงหมายเลขที่เล็กที่สุดที่ไม่ได้จองไว้ จากนั้นทำการสำรองและส่งคืนหมายเลขนั้น

  • unreserve(seatNumber) จะเป็นการ unreserve หนึ่งที่นั่งที่มีการระบุที่นั่ง

ดังนั้นหากอินพุตเป็นแบบ

  • 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 ต่อไป

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดคอนสตรัคเตอร์() นี่จะใช้เวลา n

  • current_seat :=0

  • empty_seats :=รายการใหม่

  • กำหนดฟังก์ชั่น Reserve() นี่จะใช้เวลา

  • ถ้าความยาวของ empty_seats> 0 แล้ว

    • s :=ขั้นต่ำที่ว่างเปล่า_seats

    • ลบ s จาก empty_seats

    • ผลตอบแทน s

  • current_seat :=current_seat + 1

  • กลับ current_seat

  • กำหนดฟังก์ชั่น unreserve() นี่จะใช้หมายเลขที่นั่ง

  • ใส่ 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