একটি স্ট্রিং দেওয়া আছে। ব্যাকট্র্যাকিং ব্যবহার করে স্ট্রিংয়ের সব সম্ভাব্য পারমিউটেশন (বিন্যাস) প্রিন্ট করতে হবে।
উদাহরণ
ইনপুট: "xyz"
আউটপুট: xyz, xzy, yxz, yzx, zxy, zyx
পদ্ধতি
- findPermutations(str, l, r) রিকারসিভ ফাংশন।
- বেস কেস: l==r হলে স্ট্রিং প্রিন্ট।
- লুপ i=l থেকে r: swap(str[l], str[i]), রিকারসিভ কল (l+1, r), আবার swap করে ব্যাকট্র্যাক।
C++ প্রোগ্রাম উদাহরণ
#include <iostream>
using namespace std;
void findPermutations(string str, int l, int r) {
if (l == r) cout << str << " ";
else {
for (int i = l; i <= r; i++) {
swap(str[l], str[i]);
findPermutations(str, l+1, r);
swap(str[l], str[i]);
}
}
}
int main() {
string str = "WXYZ";
int n = str.size();
findPermutations(str, 0, n-1);
return 0;
}
আউটপুট
WXYZ WXZY WYXZ WYZX WZYX WZXY XWYZ XWZY XYWZ XYZW XZYW XZWY YXWZ YXZW YWXZ YWZX YZWX YZXW ZXYW ZXWY ZYXW ZYWX ZWYX ZWXY