ধরুন আমাদের সংখ্যার একটি সেট আছে; আমাদের সেই সেটের সমস্ত সম্ভাব্য উপসেট তৈরি করতে হবে। এটি পাওয়ার সেট নামেও পরিচিত। সুতরাং সেটটি যদি [1,2,3] এর মতো হয় তবে পাওয়ার সেটটি হবে [[], [1], [2], [3], [1,2], [1,3], [2] ,3], [1,2,3]]
আসুন ধাপগুলো দেখি -
- আমরা পুনরাবৃত্তিমূলক পদ্ধতি ব্যবহার করে এটি সমাধান করব। তাই যদি পুনরাবৃত্ত পদ্ধতির নাম বলা হয় solve(), এবং এটি সংখ্যার সেট (সংখ্যা), অস্থায়ী সেট (টেম্প), রেস এবং ইনডেক্স নেয়
- সলভ() ফাংশন নিচের মত কাজ করবে -
- যদি সূচী =সংখ্যার দৈর্ঘ্য, তাহলে টেম্পের মতো একটি তালিকা তৈরি করুন এবং রেস-এ ঢুকিয়ে রিটার্ন করুন
- temp[সূচক] :=0
- সমাধান করুন(সংখ্যা, তাপমাত্রা, রেস, সূচক + 1)
- temp[সূচক] :=1
- সমাধান করুন(সংখ্যা, তাপমাত্রা, রেস, সূচক + 1)
- প্রধান ফাংশনটি নিচের মত হবে -
- res :=একটি খালি তালিকা
- সংখ্যার মতোই আকারের অস্থায়ী তালিকা তৈরি করুন এবং এটি 0 দিয়ে পূরণ করুন
- কল সমাধান (সংখ্যা, তাপমাত্রা, রেস, 0)
- main_res :=একটি খালি তালিকা
- temp_res
- -এ সমস্ত তালিকার জন্য
- temp :=খালি তালিকা
- এর জন্য i :=0 থেকে তালিকার দৈর্ঘ্য
- যদি তালিকা[i] =1 হয়, তাহলে temp-এ nums[i] ঢোকান
- মেইন_রেস এ টেম্প ঢোকান
- প্রধান ফলাফল ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
শ্রেণীর সমাধান(অবজেক্ট):def সাবসেট(self, nums):temp_result =[] self.subsets_util(nums,[0 for i in range(len(nums))],temp_result,0) main_result =[] এর জন্য temp_result-এ তালিকা:temp =[] i in range(len(lists)):if lists[i] ==1:temp.append(nums[i]) main_result.append(temp) main_result def subsets_util(self, nums,temp,result,index):if index ==len(nums):result.append([i for i in temp]) #print(temp) রিটার্ন temp[index] =0 self.subset_util(nums,temp, ফলাফল, সূচী + 1) টেম্প প্রাক>ইনপুট
[1,2,3,4]আউটপুট
<প্রে>[[], [৪], [৩], [৩, ৪], [২], [২, ৪], [২, ৩], [২, ৩, ৪], [১], [ 1, 4], [1, 3], [1, 3, 4], [1, 2], [1, 2, 4], [1, 2, 3], [1, 2, 3, 4]