Trong phần này, chúng ta sẽ xem cách tạo tất cả các hoán vị ngược bằng cách sử dụng STL trong C ++. Hoán vị thuận và nghịch của một số số như (1, 2, 3) sẽ như sau -
Hoán vị chuyển tiếp
1, 2, 3 1, 3, 2 2, 1, 3 2, 3, 1 3, 1, 2 3, 2, 1
Hoán vị đảo ngược
3, 2, 1 3, 1, 2 2, 3, 1 2, 1, 3 1, 3, 2 1, 2, 3
Chúng ta sẽ sử dụng hàm before_permutation () để lấy kết quả
Thuật toán
getPermutation (arr, n)
Begin sort arr reverse the arr repeat print array elements until the previous permutation calculation is not completed End
Ví dụ
#include<iostream> #include <algorithm> using namespace std; void disp(int arr[], int n){ for(int i = 0; i<n; i++){ cout << arr[i] << " "; } cout << endl; } void getPermutation(int arr[], int n) { sort(arr, arr + n); reverse(arr, arr+n); cout << "Possible permutations: \n"; do{ disp(arr, n); }while(prev_permutation(arr, arr+n)); } int main() { int arr[] = {11, 22, 33, 44}; int n = sizeof(arr) / sizeof(arr[0]); getPermutation(arr, n); }
Đầu ra
Possible permutations: 44 33 22 11 44 33 11 22 44 22 33 11 44 22 11 33 44 11 33 22 44 11 22 33 33 44 22 11 33 44 11 22 33 22 44 11 33 22 11 44 33 11 44 22 33 11 22 44 22 44 33 11 22 44 11 33 22 33 44 11 22 33 11 44 22 11 44 33 22 11 33 44 11 44 33 22 11 44 22 33 11 33 44 22 11 33 22 44 11 22 44 33 11 22 33 44