GFG App
Open App
Browser
Continue

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

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