मान लीजिए कि हमारे पास एक सरणी संख्या है जहां सभी तत्व अद्वितीय हैं और अलग-अलग छोटे सरणियों के साथ एक और सरणी है जिसे टुकड़े कहा जाता है। हमें यह जांचना है कि क्या हम किसी भी क्रम में सरणियों को टुकड़ों में जोड़कर मुख्य सरणी अंक प्राप्त कर सकते हैं या नहीं। लेकिन हमें प्रत्येक सरणी के टुकड़े [i] में मौजूद तत्वों को पुन:व्यवस्थित करने की अनुमति नहीं है।
इसलिए, यदि इनपुट अंकों की तरह है =[5,1,12,36,2,47,6] टुकड़े =[[2,47,6], [12,36], [1], [5]], तब आउटपुट सही होगा क्योंकि हम मुख्य सरणी प्राप्त करने के लिए उन्हें [[5], [1], [12,36], [2,47,6]] इस क्रम में जोड़ सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
अस्थायी:=एक नई सूची
-
प्रत्येक पी के लिए टुकड़ों में करें
-
अगर p[0] अंकों में मौजूद नहीं है, तो
-
झूठी वापसी
-
-
l :=p का आकार
-
इंडेक्स :=इंडेक्स (p[0]) अंकों में
-
अगर इंडेक्स इंडेक्स से इंडएक्स+एल-1 में अंकों का सबअरे पी के समान नहीं है, तो
-
झूठी वापसी
-
-
अन्यथा,
-
अस्थायी के बाद p संलग्न करें
-
-
-
यदि अंकों का आकार अस्थायी के आकार के समान है, तो
-
सही लौटें
-
-
अन्यथा,
-
झूठी वापसी
-
उदाहरण (पायथन)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(nums, pieces): temp = [] for p in pieces: if p[0] not in nums: return False l = len(p) indx = nums.index(p[0]) if nums[indx:indx+l] != p: return False else: temp.extend(p) if len(nums) == len(temp): return True else: return False nums = [5,1,12,36,2,47,6] pieces = [[2,47,6],[12,36],[1],[5]] print(solve(nums, pieces))
इनपुट
[5,1,12,36,2,47,6], [[2,47,6],[12,36],[1],[5]]
आउटपुट
True