এই বিভাগে আমরা দেখব কিভাবে একটি স্ট্রিং এর সমস্ত পারমুটেশন পেতে হয়। পুনরাবৃত্ত পদ্ধতি খুব সহজ. এটি ব্যাক-ট্র্যাকিং পদ্ধতি ব্যবহার করে। কিন্তু এখানে আমরা পুনরাবৃত্তিমূলক পদ্ধতি ব্যবহার করব।
একটি স্ট্রিং ABC-এর সমস্ত পারমুটেশন হল {ABC, ACB, BAC, BCA, CAB, CBA} এর মত। আসুন আরও ভাল ধারণা পেতে অ্যালগরিদম দেখি৷
অ্যালগরিদম
getAllPerm(str)
স্ট্রিং এর অক্ষর সাজাতে শুরু করুন সত্য থাকাকালীন, স্ট্রিংটি প্রিন্ট করুন str i :=str – 1 এর দৈর্ঘ্য যখন str[i - 1]>=str[i], do i :=i – 1 যদি i হয় 0, তারপর j :=str – 1 এর দৈর্ঘ্য সম্পন্ন হলে শেষে ফিরুন যখন j> i AND str[j] <=str[i – 1], do j :=j – 1 পজিশন থেকে অক্ষর বিনিময় করুন str[i - 1], str[j] স্ট্রিং বিপরীত. সম্পন্ন
উদাহরণ
#include#include namespace ব্যবহার করে std;void getAllPerm(string str){ sort(str.begin(), str.end()); while (সত্য){ cout < =str[i]){ যদি (--i ==0) রিটার্ন; } int j =str.length() - 1; যখন (j> i &&str[j] <=str[i - 1]) j--; অদলবদল(str[i - 1], str[j]); বিপরীত (str.begin() + i, str.end()); }}int main(){ string str ="WXYZ"; getAllPerm(str);}
আউটপুট
WXYZWXZYWYXZWYZWYZXWZXYWZYXWYZXWZYXYWZXYZWYZWYXWZYXYWZXYZWXZWYXZYWYWXZYWZXYXWZYXZYXZWYZWXYZWZWZWYZWYXZWYZWYZWZWZWYZWYXZXWYZXYWZYWXY>