समस्या कथन
किसी भी शब्द के परमुटेशन की एक लिस्ट दी गई है। परमुटेशन की लिस्ट से मिसिंग परमुटेशन ढूंढें।
उदाहरण
यदि परमुटेशन है = { "ABC", "ACB", "BAC", "BCA"} तो मिसिंग परमुटेशन हैं {"CBA" और "CAB"}
एल्गोरिदम
- दिए गए सभी स्ट्रिंग्स का एक सेट बनाएं
- और सभी परमुटेशन का एक और सेट
- दोनों सेट्स के बीच का अंतर वापस करें
उदाहरण
#includeusing 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