Computer >> Máy Tính >  >> Lập trình >> C ++

Tất cả các hoán vị ngược của một mảng sử dụng STL trong C ++?

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