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

C++ में लिस्ट में मिसिंग परमुटेशन


समस्या कथन

किसी भी शब्द के परमुटेशन की एक लिस्ट दी गई है। परमुटेशन की लिस्ट से मिसिंग परमुटेशन ढूंढें।

उदाहरण

यदि परमुटेशन है = { "ABC", "ACB", "BAC", "BCA"} तो मिसिंग परमुटेशन हैं {"CBA" और "CAB"}

एल्गोरिदम

  • दिए गए सभी स्ट्रिंग्स का एक सेट बनाएं
  • और सभी परमुटेशन का एक और सेट
  • दोनों सेट्स के बीच का अंतर वापस करें

उदाहरण

#include 
using namespace std;

void findMissingPermutation(string givenPermutation[], size_t permutationSize) {
    vector permutations;
    string input = givenPermutation[0];
    permutations.push_back(input);
    while (true) {
        string p = permutations.back();
        next_permutation(p.begin(), p.end());
        if (p == permutations.front())
            break;
        permutations.push_back(p);
    }
    vector missing;
    set givenPermutations(givenPermutation, givenPermutation + permutationSize);
    set_difference(permutations.begin(), permutations.end(),
        givenPermutations.begin(),
        givenPermutations.end(),
        back_inserter(missing));
    cout << "Missing permutations are" << endl;
    for (auto i = missing.begin(); i != missing.end(); ++i)
        cout << *i << endl;
}

int main() {
    string givenPermutation[] = {"ABC", "ACB", "BAC", "BCA"};
    size_t permutationSize = sizeof(givenPermutation) / sizeof(*givenPermutation);
    findMissingPermutation(givenPermutation, permutationSize);
    return 0;
}

जब आप उपरोक्त प्रोग्राम को कंपाइल और 실행 करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है -

आउटपुट

Missing permutations are
CAB
CBA

  1. C++ में लिंक्ड सूची को समतल करना C++ में लिंक्ड सूची को समतल करना

    इस समस्या में, हमें दो पॉइंटर नोड्स, राइट और डाउन से युक्त एक लिंक्ड सूची दी गई है। राइट नोड मुख्य लिंक्ड सूची पॉइंटर है। डाउन नोड उस नोड से शुरू होने वाली द्वितीयक लिंक्ड सूची के लिए है। सभी लिंक्ड सूचियाँ सॉर्टेड हैं। हमारा कार्य एक प्रोग्राम बनाना है जो लिंक्ड सूची को समतल करे और परिणामी सूची स

  1. - C++ में क्रमचय II (Permutations II)

    मान लीजिए हमारे पास विशिष्ट पूर्णांकों का एक संग्रह है; हमें सभी संभावित क्रमचय ढूंढने हैं। अब यदि सरणी डुप्लिकेट तत्वों को संग्रहीत करती है, तो उस स्थिति को अनदेखा करें जो समान दिख रही हो। यदि सरणी [1,1,3] है, तो परिणाम [[1,1,3], [1,3,1], [3,1,1]] होगा। इसे हल करने के लिए हम निम्नलिखित चरणों का पा

  1. - C++ में स्ट्रैंड सॉर्ट

    इस सेक्शन में हम देखेंगे कि C++ के स्टैंडर्ड लाइब्रेरी का उपयोग करके किसी ऐरे या लिंक्ड लिस्ट को कैसे सॉर्ट कर सकते हैं। C++ में विभिन्न उद्देश्यों के लिए कई अलग-अलग लाइब्रेरीज हैं। सॉर्टिंग उनमें से एक है। C++ फ़ंक्शन std::list::sort() लिस्ट के एलिमेंट्स को आरोही क्रम में सॉर्ट करता है। समान एलिमे