Skip to content
Related Articles
Get the best out of our app
GFG App
Open App
geeksforgeeks
Browser
Continue

Related Articles

All reverse permutations of an array using STL in C++

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Given an array, the task is to print or display all the reverse permutations of this array using STL in C++. Reverse permutation means, for an 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

Examples:

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 

Approach: The next possible permutation of the array in reverse order can be found using prev_permutation() function provided in STL.

Syntax:

bool prev_permutation (BidirectionalIterator first,
                       BidirectionalIterator last);

Below is the implementation of the above Approach:




// 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;
}


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

Related Article: All permutations of an array using STL in C++


My Personal Notes arrow_drop_up
Last Updated : 01 Apr, 2019
Like Article
Save Article
Similar Reads