मान लीजिए हमारे पास संख्याओं का एक समूह है; हमें उस समुच्चय के सभी संभावित उपसमुच्चय उत्पन्न करने होंगे। इसे पावर सेट के रूप में भी जाना जाता है। तो अगर सेट [1,2,3] जैसा है, तो पावर सेट [[], [1], [2], [3], [1,2], [1,3], [2 होगा। ,3], [1,2,3]]
आइए चरणों को देखें -
- हम इसे पुनरावर्ती दृष्टिकोण का उपयोग करके हल करेंगे। इसलिए यदि पुनरावर्ती विधि नाम को हल () कहा जाता है, और यह संख्याओं (अंक), अस्थायी सेट (अस्थायी), रेस और इंडेक्स का सेट लेता है
- हल करें () फ़ंक्शन नीचे की तरह काम करेगा -
- यदि अनुक्रमणिका =अंकों की लंबाई है, तो अस्थायी के समान एक सूची बनाएं, और res में डालें और वापस लौटें
- अस्थायी [सूचकांक] :=0
- समाधान (अंक, अस्थायी, रेस, अनुक्रमणिका + 1)
- अस्थायी[सूचकांक] :=1
- समाधान (अंक, अस्थायी, रेस, अनुक्रमणिका + 1)
- मुख्य समारोह नीचे जैसा होगा -
- res :=एक खाली सूची
- अंकों के समान आकार की अस्थायी सूची बनाएं, और इसे 0 से भरें
- कॉल सॉल्व (अंक, अस्थायी, रेस, 0)
- main_res :=एक खाली सूची
- temp_res में सभी सूचियों के लिए
- अस्थायी:=खाली सूची
- i के लिए :=0 से सूचियों की लंबाई
- यदि सूचियाँ[i] =1 है, तो अंक [i] को अस्थायी में डालें
- मेन_रेस में अस्थायी डालें
- रिटर्न मेन रेस
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution(object): def subsets(self, nums): temp_result = [] self.subsets_util(nums,[0 for i in range(len(nums))],temp_result,0) main_result = [] for lists in temp_result: temp = [] for i in range(len(lists)): if lists[i] == 1: temp.append(nums[i]) main_result.append(temp) return main_result def subsets_util(self,nums,temp,result,index): if index == len(nums): result.append([i for i in temp]) #print(temp) return temp[index] = 0 self.subsets_util(nums,temp,result,index+1) temp[index] = 1 self.subsets_util(nums, temp, result,index + 1) ob1 = Solution() print(ob1.subsets([1,2,3,4]))
इनपुट
[1,2,3,4]
आउटपुट
[[], [4], [3], [3, 4], [2], [2, 4], [2, 3], [2, 3, 4], [1], [1, 4], [1, 3], [1, 3, 4], [1, 2], [1, 2, 4], [1, 2, 3], [1, 2, 3, 4]]