Todas las permutaciones inversas de una array usando STL en C++

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++

Publicación traducida automáticamente

Artículo escrito por Code_r y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *