Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

पुनरावृत्ति का उपयोग करके स्ट्रिंग के सभी क्रमपरिवर्तन


इस खंड में हम देखेंगे कि स्ट्रिंग के सभी क्रमपरिवर्तन कैसे प्राप्त करें। पुनरावर्ती दृष्टिकोण बहुत सरल है। यह बैक-ट्रैकिंग प्रक्रिया का उपयोग करता है। लेकिन यहां हम पुनरावृत्त दृष्टिकोण का उपयोग करेंगे।

स्ट्रिंग ABC के सभी क्रमपरिवर्तन {ABC, ACB, BAC, BCA, CAB, CBA} जैसे हैं। आइए एल्गोरिदम देखें ताकि बेहतर विचार मिल सके।

एल्गोरिदम

getAllPerm(str)

begin   sort the characters of the string   while true, do     print the string str     i := length of str – 1     while str[i - 1] >= str[i], do         i := i – 1         if i is 0, then             return         end if     done     j := length of str – 1     while j > i AND str[j] <= str[i – 1], do         j := j – 1     done     exchange the characters from position str[i - 1], str[j]     reverse the string.   done end

उदाहरण

#include  #include  using namespace std; void getAllPerm(string str){     sort(str.begin(), str.end());     while (true){         cout << str << endl;         int i = str.length() - 1;         while (str[i-1] >= str[i]){             if (--i == 0)             return;         }         int j = str.length() - 1;         while (j > i && str[j] <= str[i - 1])             j--;         swap(str[i - 1], str[j]);         reverse (str.begin() + i, str.end());     } } int main(){     string str = "WXYZ";     getAllPerm(str); }

आउटपुट

WXYZ WXZY WYXZ WYZX WZXY WZYX XWYZ XWZY XYWZ XYZW XZWY XZYW YWXZ YWZX YXWZ YXZW YZWX YZXW ZWXY ZWYX ZXWY ZXYW ZYWX ZYXW

  1. - Java में ArrayList का उपयोग करके स्ट्रिंग के सभी क्रमपरिवर्तन (permutations) प्रिंट करें

    इस समस्या में, हमें आकार n का एक स्ट्रिंग दिया गया है और हमें स्ट्रिंग के सभी क्रमपरिवर्तन प्रिंट करने हैं। लेकिन इस बार हमें ArrayList का उपयोग करके इस क्रमपरिवर्तन को प्रिंट करना है। आइए एक उदाहरण से समझते हैं - इनपुट: string = XYZ आउटपुट: XYZ, XZY, YXZ, YZX, ZXY, ZYX इस समस्या को हल करने के ल

  1. - रीकर्सन का उपयोग करके लेक्सिकोग्राफिक क्रम में स्ट्रिंग के सभी क्रमपरिवर्तन प्रिंट करने का पायथन प्रोग्राम

    जब रीकर्सन का उपयोग करके लेक्सिकोग्राफिक क्रम में स्ट्रिंग के सभी क्रमपरिवर्तन प्रिंट करने हों, तो एक विधि परिभाषित की जाती है जो एलिमेंट्स के क्रम पर पुनरावृति करने के लिए for लूप का उपयोग करती है और एलिमेंट्स को जोड़ने के लिए join मेथड का उपयोग करती है। उदाहरण from math import factorial def lexi

  1. - पायथन में itertools का उपयोग करके स्ट्रिंग के पहले n विशिष्ट क्रमपरिवर्तन प्रिंट करें

    वस्तुओं की संख्या का क्रमपरिवर्तन इस बात का प्रतिनिधित्व करता है कि अपडेट्स को विभिन्न अनुक्रमों में कैसे प्रस्तुत किया जा सकता है। लेकिन कभी-कभी दी गई वस्तुओं की श्रृंखला में दो वस्तुएं समान हो सकती हैं। उस स्थिति में दो अनुक्रम समान हो जाएंगे। इस लेख में हम देखेंगे कि दी गई वस्तुओं की सूची से केवल