Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C เพื่อพิมพ์พีชคณิตทั้งหมดของสตริงที่กำหนด


ในปัญหานี้ เราได้รับสตริง งานของเราคือสร้างโปรแกรม 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