मान लीजिए कि हमें एक ऐसी प्रणाली तैयार करनी है जो n सीटों की आरक्षण स्थिति का प्रबंधन करती है। सीटों की संख्या 1 से n तक है। तो हमें इन कार्यों के साथ, SeatReserveManager वर्ग को लागू करना होगा -
-
कंस्ट्रक्टर जो n को इनपुट के रूप में लेता है और उस ऑब्जेक्ट को इनिशियलाइज़ करता है जो n सीटों को 1 से n तक प्रबंधित करेगा। प्रारंभ में सभी सीटें उपलब्ध हैं।
-
रिजर्व (), यह सबसे छोटी संख्या वाली अनारक्षित सीट प्राप्त करेगा, फिर इसे आरक्षित करेगा, और इसकी संख्या लौटाएगा।
-
अनारक्षित (सीट संख्या), यह दी गई सीट संख्या के साथ एक आरक्षित सीट को अनारक्षित करेगा।
तो, अगर इनपुट पसंद है
-
obj =SeatReserveManager(7)
-
obj.रिजर्व ()
-
obj.रिजर्व ()
-
obj.रिजर्व ()
-
obj.unreserve(2)
-
obj.unreserve(5)
-
obj.रिजर्व ()
-
obj.रिजर्व ()
तो आउटपुट 1, 2, 3, 2, 5 होगा, शुरू में तीन सीटें 1, 2, 3 आरक्षित करें, फिर अनारक्षित 2 और 5 लेकिन 5 अभी तक आरक्षित नहीं है, फिर 5 आरक्षित करें।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
कंस्ट्रक्टर () को परिभाषित करें। इसमें n
. लगेगा -
current_seat :=0
-
खाली_सीट :=एक नई सूची
-
फ़ंक्शन रिजर्व() को परिभाषित करें। इसमें लगेगा
-
अगर खाली_सीटों की लंबाई> 0, तो
-
s :=कम से कम खाली_सीटें
-
खाली सीटों से हटाएं
-
वापसी एस
-
-
current_seat :=current_seat + 1
-
वर्तमान_सीट लौटें
-
एक फ़ंक्शन अनारक्षित () को परिभाषित करें। यह सीटनंबर लेगा
-
खाली_सीटों के अंत में सीट संख्या डालें
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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