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

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

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

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

एल्गोरिदम

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 <iostream>
#include <algorithm>
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. जावा में ArrayList का उपयोग करके एक स्ट्रिंग के सभी क्रमपरिवर्तन को प्रिंट करें

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

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

    जब रिकर्सन का उपयोग करते हुए एक स्ट्रिंग के सभी क्रमपरिवर्तन को लेक्सिकोग्राफिक क्रम में प्रिंट करने की आवश्यकता होती है, तो एक विधि परिभाषित की जाती है, जो तत्वों के अनुक्रम पर पुनरावृति करने के लिए फॉर लूप का उपयोग करती है, और तत्वों में शामिल होने के लिए जॉइन विधि का उपयोग करती है। नीचे उसी का

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

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