Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ एसटीएल का उपयोग कर दिए गए स्ट्रिंग के क्रमपरिवर्तन

एक स्ट्रिंग का क्रमचय तब बनता है जब दिए गए स्ट्रिंग्स के चरित्र को किसी भी रूप में पुनर्व्यवस्थित किया जाता है। इस ट्यूटोरियल में, हम इस बात पर चर्चा करने जा रहे हैं कि हम C++ की स्टैंडर्ड टेम्प्लेट लाइब्रेरी का उपयोग करके किसी दिए गए स्ट्रिंग के सभी क्रमपरिवर्तन कैसे प्रिंट कर सकते हैं, उदाहरण के लिए

Input : s = “ADT”

Output : “ADT”, “ATD”, “DAT”, “DTA”, “TAD”, “TDA”

Explanation : In the given output as you can see all the string are made up of same three character present in our string and are just rearranged thus they fit in the definition of a permutation of a string now there is one more thing to note these are all the permutations possible of string s.

ऐसी दो विधियाँ हैं जिनके द्वारा हम किसी दिए गए स्ट्रिंग के सभी क्रमपरिवर्तनों को प्रिंट कर सकते हैं

घुमाएं()

पहली विधि जिसका हम उपयोग करने जा रहे हैं वह है रोटेट विधि का उपयोग करना। इस पद्धति में, हम STL के रोटेट फ़ंक्शन का उपयोग करेंगे, जिसका उपयोग हमारे स्ट्रिंग को घुमाने के लिए किया जाता है, और हम क्रमपरिवर्तन को प्रिंट करने के लिए रिकर्सन का उपयोग करने जा रहे हैं।

उदाहरण

उपरोक्त विधि के लिए C++ कोड

#include<bits/stdc++.h>
using namespace std;
void permutations(string s, string ans){
    if(s.size() == 0) {
// when our string which needs to
//be rotated becomes empty then it means
//that our permutation is stored in ans
        cout << ans << "\n";
        return ;
    }
    for(int i = 0; i < s.size(); i++){
        permutations(s.substr(1), ans + s[0]);
        // we are adding the
        // first character in our ans
        // passing all elements from index 1 in our
        // rotate string for next function.
        rotate(s.begin(), s.begin()+1, s.end());
        //rotating such that our second element becomes first
    }
}
int main(){
    string s = "ADT"; // given string
    permutations(s, "");
    return 0;
}

आउटपुट

ADT
ATD
DTA
DAT
TAD
TDA

अगला_क्रमपरिवर्तन

अब हम STL के एक अन्य फ़ंक्शन का उपयोग करेंगे, जैसे कि next_Permutation जैसा कि नाम से पता चलता है, इस फ़ंक्शन का रिटर्न टर्न यह है कि इस स्ट्रिंग का अगला क्रमपरिवर्तन मौजूद है या नहीं। यदि नहीं, तो यह झूठी वापसी करता है।

जैसा कि आप जानते हैं, यह फ़ंक्शन अगले क्रमपरिवर्तन की जाँच करता है; इस प्रकार, हमें पहले स्ट्रिंग को शब्दावली के अनुसार क्रमबद्ध करने की आवश्यकता है ताकि हमें सभी संभावित क्रमपरिवर्तन मिलें।

उदाहरण

उपरोक्त विधि के लिए C++ कोड

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s = "ADT"; // given string
    sort(s.begin(), s.end()); // sorting the string
    do{
        cout << s << "\n"; // printing the permutations
    }while(next_permutation(s.begin(), s.end())); // till next_permutations returns false
    return 0;
}

आउटपुट

ADT
ATD
DAT
DTA
TAD
TDA

उपरोक्त प्रोग्राम में, हम अपनी स्ट्रिंग को सॉर्ट करते हैं, और फिर next_permutation फ़ंक्शन की सहायता से, हम सभी संभावित क्रमपरिवर्तन प्रिंट करते हैं।

निष्कर्ष

इस ट्यूटोरियल में, हम दिए गए स्ट्रिंग के सभी संभावित क्रमपरिवर्तनों को C++ में STL की मदद से प्रिंट करते हैं। हमने इस समस्या के लिए C++ प्रोग्राम और कुछ आवश्यक STL फंक्शन और उनके उपयोग के बारे में भी सीखा। हमें उम्मीद है कि आपको यह ट्यूटोरियल मददगार लगा होगा।


  1. C++ STL का उपयोग करके दी गई श्रेणी में अभाज्य संख्याओं को प्रिंट करें

    यह एक निश्चित सीमा में अभाज्य संख्याओं को मुद्रित करने का कार्यक्रम है। एल्गोरिदम Begin    Declare a user define datatype stl.    Declare a vector number to the stl datatype.    Declare variable a to the stl datatype.    Declare vector Prime_Number to the Bool

  1. सी ++ प्रोग्राम किसी दिए गए स्ट्रिंग के क्रमपरिवर्तन की संख्या का पता लगाने के लिए

    हम एक स्ट्रिंग के पात्रों को अलग-अलग क्रम में व्यवस्थित कर सकते हैं। यहां हम देखेंगे कि हम कैसे गिन सकते हैं कि किसी दिए गए स्ट्रिंग से कितने क्रमपरिवर्तन बन सकते हैं। हम जानते हैं कि यदि एक स्ट्रिंग abc है। इसमें तीन वर्ण हैं; हम उन्हें 3 में व्यवस्थित कर सकते हैं! =6 अलग-अलग तरीके। तो n वर्णों वा

  1. एसटीएल का उपयोग कर सी ++ में ऐरे उत्पाद

    यह ऐरे उत्पाद का पता लगाने के लिए C++ प्रोग्राम का एक उदाहरण है। एल्गोरिदम Begin Initialize the values of array. Call used defined function accumulate to return the product of array. Print the solution. End. उदाहरण कोड #include <iostream> #include <numeric> using namespace std;