STL의 Prev_permutation은 [first, last] 범위의 요소를 사전순으로 더 작은 순열로 재배열하는 데 사용됩니다. 순열은 N! 요소가 취할 수 있는 가능한 조치. 다음은 STL에서 Prev_permutation을 구현하는 C++ 프로그램입니다.
알고리즘
Begin Define one integer array variable elements[]. Get the number of data e from the user. Initialize the array elements[] with e number of data from the keyboard. Sort all the array elements. Reverse the array elements. Do show(elements) //to display the current content of the array while (prev_permutation(elements, elements + e)) End.
예시 코드
#include<iostream>
#include <algorithm>
using namespace std;
void show(int a[], int n) {
for(int i = 0; i < n; i++) {
cout<<a[i]<<" ";
}
cout<<endl;
}
int main () {
int e, i;
cout<<"Enter number of elements to be inserted: ";
cin>>e;
int elements[e];
for (i = 0; i < e; i++) {
cout<<"Enter "<<i + 1<<" element: ";
cin>>elements[i];
}
sort (elements, elements + e);
reverse (elements, elements + e);
cout << "The "<<e<<"! possible permutations with ";
cout<<e<<" elements: "<<endl;
do {
show(elements, e);
}
while (prev_permutation(elements, elements + e));
return 0;
} 출력
Enter number of elements to be inserted: 4 Enter 1 element: 7 Enter 2 element: 6 Enter 3 element: 10 Enter 4 element: 2 The 4! possible permutations with 4 elements: 10 7 6 2 10 7 2 6 10 6 7 2 10 6 2 7 10 2 7 6 10 2 6 7 7 10 6 2 7 10 2 6 7 6 10 2 7 6 2 10 7 2 10 6 7 2 6 10 6 10 7 2 6 10 2 7 6 7 10 2 6 7 2 10 6 2 10 7 6 2 7 10 2 10 7 6 2 10 6 7 2 7 10 6 2 7 6 10 2 6 10 7 2 6 7 10