मान लीजिए, हमारे पास दो सरणियाँ हैं जिनमें पूर्णांक हैं। एक सूची में कुछ इकाई चौड़ाई वाले बक्सों की ऊँचाई होती है और दूसरी सूची में गोदाम में कमरों की ऊँचाई होती है। कमरों की संख्या 0...n है, और कमरों की ऊंचाई सरणी गोदाम में उनके संबंधित सूचकांक में प्रदान की जाती है। हमें पता लगाना है कि कितने बक्सों को गोदाम में धकेला जा सकता है। कुछ बातों को ध्यान में रखना होगा,
-
बक्सों को एक दूसरे के ऊपर नहीं रखा जा सकता।
-
बक्सों का क्रम बदला जा सकता है।
बक्सों को किसी भी तरफ से गोदाम में डाल दिया जाता है, यह बाएं या दाएं से हो सकता है। यदि कोई बॉक्स कमरे की ऊंचाई से लंबा है, तो उसके दाईं ओर के सभी बक्सों के साथ बॉक्स को गोदाम में नहीं धकेला जा सकता है।
इसलिए, यदि इनपुट बॉक्स =[4, 5, 6], गोदाम =[4, 5, 6, 7] की तरह है, तो आउटपुट 3 होगा इनपुट के रूप में दिए गए तीनों बॉक्स को गोदाम में रखा जा सकता है।पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
सूची बक्सों को अवरोही क्रम में क्रमबद्ध करें
-
एल :=0
-
r :=गोदाम का आकार - 1
-
द्वि:=0
-
रिट:=0
-
जबकि द्वि <बक्से का आकार और l <=r, करते हैं
-
अगर गोदाम [एल]> गोदाम [आर], तो
-
अगर बक्से [द्वि] <=गोदाम [एल], तो
-
रिट:=रिट + 1
-
एल :=एल + 1
-
-
अन्यथा,
-
अगर बक्से [द्वि] <=गोदाम [आर], तो
-
रिट:=रिट + 1
-
आर:=आर - 1
-
-
-
द्वि :=द्वि + 1
-
-
-
वापसी रिट
उदाहरण (पायथन)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(boxes, godown): boxes.sort(reverse = True) l, r = 0, len(godown) - 1 bi, ret = 0, 0 while bi < len(boxes) and l <= r: if godown[l] > godown[r]: if boxes[bi] <= godown[l]: ret += 1 l += 1 else: if boxes[bi] <= godown[r]: ret += 1 r -= 1 bi += 1 return ret print(solve([4, 5, 6], [4, 5, 6, 7]))
इनपुट
[4, 5, 6], [4, 5, 6, 7]
आउटपुट
3