ধরুন আমাদের স্বতন্ত্র পূর্ণসংখ্যার একটি সংগ্রহ আছে; আমাদের সম্ভাব্য সকল স্থানান্তর খুঁজে বের করতে হবে। সুতরাং যদি অ্যারেটি [2,1,3] এর মত হয়, তাহলে ফলাফল হবে [[1,2,3], [1,3,2], [2,1,3], [2,3,1] ], [৩,১,২], [৩,২,১]]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- আমরা পুনরাবৃত্ত পদ্ধতি ব্যবহার করব, এটি তালিকা তৈরি করবে, শুরু করবে, curr এবং রেস করবে
- যদি শুরু হয়> তালিকার দৈর্ঘ্য – 1, তারপর রেস-এ curr যোগ করুন এবং ফিরে আসুন
- আমি পরিসীমার জন্য প্রদত্ত তালিকার দৈর্ঘ্য থেকে শুরু করি - 1
- সূচী শুরুতে উপস্থিত তালিকার উপাদানগুলি অদলবদল করুন এবং (start + (i – start))
- ক্রমক্রম(তালিকা, শুরু + 1, curr + [তালিকা[শুরু]], রেস)
- সূচী শুরুতে উপস্থিত তালিকার উপাদানগুলি অদলবদল করুন এবং (start + (i – start))
- প্রাথমিকভাবে পারমুটেশনকে কল করুন(arr, 0, [], res)
উদাহরণ(পাইথন)
আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −
শ্রেণির সমাধান(অবজেক্ট):def permute(self, nums):result =[] self.permute_util(nums,0,[],result) রিটার্ন ফলাফল def permute_util(self,given_list,start,curr,result):if start> len(given_list)-1:#print(curr) result.append(curr) রেঞ্জে i এর জন্য রিটার্ন(start,len(given_list)):self.swap(given_list,start,start+(i-start)) self.permute_util(given_list,start+1,curr+[given_list[start]],ফলাফল) #print(given_list) self.swap(given_list, start, start + (i - start)) def swap(self,nums,index1, index2):temp =nums[index1] nums[index1] =nums[index2] nums[index2] =tempob1 =সমাধান()print(ob1.permute([1,2,3,4]))
ইনপুট
[1,2,3,4]