मान लीजिए हमारे पास संख्याओं का एक सेट है; हमें उस सेट के सभी संभावित सबसेट उत्पन्न करने हैं। इसे पावर सेट के रूप में भी जाना जाता है। इसलिए यदि सेट [1,2,3] जैसा है, तो पावर सेट [[], [1], [2], [3], [1,2], [1,3], [2,3], [1,2,3]] होगा।
आइए चरण देखते हैं -
- हम इसे रिकर्सिव दृष्टिकोण का उपयोग करके हल करेंगे। इसलिए यदि रिकर्सिव मेथड का नाम solve() है, और यह संख्याओं का सेट (nums), अस्थायी सेट (temp), res और इंडेक्स लेता है
- solve() फ़ंक्शन नीचे की तरह काम करेगा -
- यदि इंडेक्स = nums की लंबाई, तो temp के समान एक लिस्ट बनाएं, और res में डालें और लौट जाएं
- temp[इंडेक्स] := 0
- solve(nums, temp, res, इंडेक्स + 1)
- temp[इंडेक्स] := 1
- solve(nums, temp, res, इंडेक्स + 1)
- मुख्य फ़ंक्शन नीचे की तरह होगा -
- res := एक खाली लिस्ट
- nums के समान आकार का temp लिस्ट बनाएं, और इसे 0 से भरें
- solve(nums, temp, res, 0) कॉल करें
- main_res := एक खाली लिस्ट
- temp_res में सभी लिस्ट्स के लिए
- temp := खाली लिस्ट
- i := 0 से लिस्ट्स की लंबाई तक
- यदि लिस्ट्स[i] = 1, तो nums[i] को temp में डालें
- temp को main_res में डालें
- main res लौटाएं
बेहतर समझ के लिए निम्न कार्यान्वयन देखें -
उदाहरण
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])
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]]