Dada una array, la tarea es imprimir o mostrar todas las permutaciones inversas de esta array usando STL en C++. Permutación inversa significa, para una array {1, 2, 3}:
forward permutations: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 reverse permutations: 3 2 1 3 1 2 2 3 1 2 1 3 1 3 2 1 2 3
Ejemplos:
Input: a[] = {1, 2, 3} Output: 3 2 1 3 1 2 2 3 1 2 1 3 1 3 2 1 2 3 Input: a[] = {10, 20, 30, 40} Output: Possible permutations are: 40 30 20 10 40 30 10 20 40 20 30 10 40 20 10 30 40 10 30 20 40 10 20 30 30 40 20 10 30 40 10 20 30 20 40 10 30 20 10 40 30 10 40 20 30 10 20 40 20 40 30 10 20 40 10 30 20 30 40 10 20 30 10 40 20 10 40 30 20 10 30 40 10 40 30 20 10 40 20 30 10 30 40 20 10 30 20 40 10 20 40 30 10 20 30 40
Enfoque: la siguiente permutación posible de la array en orden inverso se puede encontrar utilizando la función prev_permutation() proporcionada en STL.
Sintaxis:
bool prev_permutation (BidirectionalIterator first, BidirectionalIterator last);
A continuación se muestra la implementación del enfoque anterior:
// C++ program to display all permutations // in reverse order // of an array using STL in C++ #include <bits/stdc++.h> using namespace std; // Function to display the array void display(int a[], int n) { for (int i = 0; i < n; i++) { cout << a[i] << " "; } cout << endl; } // Function to find the permutations void findPermutations(int a[], int n) { // Sort the given array sort(a, a + n); reverse(a, a + n); // Find all possible permutations cout << "Possible permutations are:\n"; do { display(a, n); } while (prev_permutation(a, a + n)); } // Driver code int main() { int a[] = { 10, 20, 30, 40 }; int n = sizeof(a) / sizeof(a[0]); findPermutations(a, n); return 0; }
Producción:
Possible permutations are: 40 30 20 10 40 30 10 20 40 20 30 10 40 20 10 30 40 10 30 20 40 10 20 30 30 40 20 10 30 40 10 20 30 20 40 10 30 20 10 40 30 10 40 20 30 10 20 40 20 40 30 10 20 40 10 30 20 30 40 10 20 30 10 40 20 10 40 30 20 10 30 40 10 40 30 20 10 40 20 30 10 30 40 20 10 30 20 40 10 20 40 30 10 20 30 40
Artículo relacionado: Todas las permutaciones de una array usando STL en C++