इस समस्या में हमें एक तार दिया जाता है। हमारा काम किसी दिए गए स्ट्रिंग के सभी क्रमपरिवर्तन को प्रिंट करने के लिए एक सी प्रोग्राम बनाना है।
यह प्रोग्राम दिए गए स्ट्रिंग के सभी संभावित संयोजनों को ढूंढेगा और उन्हें प्रिंट करेगा।
क्रमपरिवर्तन किसी वस्तु के सभी भागों की व्यवस्था के सभी संभावित क्रमों में व्यवस्था है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
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