Open In App
Related Articles

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

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report
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++

Last Updated : 01 Apr, 2019
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads