ในปัญหานี้ เราได้รับสตริง งานของเราคือสร้างโปรแกรม c เพื่อพิมพ์พีชคณิตทั้งหมดของสตริงที่กำหนด
โปรแกรมนี้จะหาชุดค่าผสมที่เป็นไปได้ทั้งหมดของสตริงที่ระบุและพิมพ์ออกมา
การเรียงสับเปลี่ยน คือการจัดเรียงของทุกส่วนของวัตถุในลำดับที่เป็นไปได้ทั้งหมดของการจัดเรียง
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
อินพุต
xyz
ผลลัพธ์
xyz, xzy, yxz, yzx, zxy, zyx
คำอธิบาย
These are all permutations take in order.
ในการแก้ปัญหานี้ เราจะใช้การย้อนรอย กล่าวคือ นำอักขระแต่ละตัวของสตริงเป็นอักขระตัวแรกของการเรียงสับเปลี่ยน จากนั้นจึงเลือกอักขระที่เหลือทั้งหมดของสตริงทีละตัวตามลำดับ และด้วยเหตุนี้การพิมพ์การเรียงสับเปลี่ยนทั้งหมดของสตริง
โปรแกรมพิมพ์เรียงสับเปลี่ยนทั้งหมดของสตริงที่กำหนด
//โปรแกรมพิมพ์เรียงสับเปลี่ยนทั้งหมดของสตริงที่กำหนด −
ตัวอย่าง
#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