Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Missing Permutations in a list

  • Difficulty Level : Medium
  • Last Updated : 07 Dec, 2018

Given a list of permutations of any word. Find the missing permutation from the list of permutations.


Input : Permutation_given[] = {"ABCD", "CABD", "ACDB", 
              "DACB", "BCDA", "ACBD", "ADCB", "CDAB",
              "DABC", "BCAD", "CADB", "CDBA", "CBAD", 
              "ABDC", "ADBC", "BDCA", "DCBA", "BACD",
              "BADC", "BDAC", "CBDA", "DCAB"};
Output : DBAC DBCA

1) We create a set of all given strings.
2) And one more set of all permutations.
3) Finally return difference between two sets.

#include <bits/stdc++.h>
using namespace std;
void find_missing_strings(string Permutation_given[], size_t Size_Permutation_given)
    // vector "permutation" containing all
    // the permutation of input string
    vector<string> permutations;
    // Here we can take any string
    // from the given list and do
    // the necessary permutation
    string input = Permutation_given[0];
    // In the loop we will store
    // all the permutations of the string
    // in the vector "permutation".
    while (true) {
        string p = permutations.back();
        // Getting next permutation of input string
        next_permutation(p.begin(), p.end());
        if (p == permutations.front())
    // vector containing all the
    // missing strings in permutation
    vector<string> missing;
    // given_permutations contains the
    // permutation of the input string
    set<string> given_permutations(Permutation_given, 
         Permutation_given + Size_Permutation_given);
    // Through the set difference we will get 
    // the missing words in vector missing
    set_difference(permutations.begin(), permutations.end(),
    // printing all the missing string
    for (auto i = missing.begin(); i != missing.end(); ++i)
        cout << *i << endl;
// Driver code
int main()
    string Permutation_given[] = {
        "ABCD", "CABD", "ACDB", "DACB",
        "BCDA", "ACBD", "ADCB", "CDAB",
        "DABC", "BCAD", "CADB", "CDBA",
        "CBAD", "ABDC", "ADBC", "BDCA",
        "DCBA", "BACD", "BADC", "BDAC",
        "CBDA", "DCAB"
    // size of permutation list
    size_t Size_Permutation_given = 
                 sizeof(Permutation_given) / 
    return 0;



My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!