// 첫번째 인자가 구하고자 하는 순열의 시작, 두번째 인자가 순열의 끝
bool next_permutation (BidirectionalIterator first, BidirectionalIterator last);
// 아래처럼 직접 비교함수를 넣어줘도 됩니다.
bool next_permutation (BidirectionalIterator first, BidirectionalIterator last, Compare comp);
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
// 1부터 4까지 저장할 벡터 선언 (배열도 가능!)
vector<int> v(4);
// 1부터 4까지 벡터에 저장
for(int i=0; i<4; i++){
v[i] = i+1;
}
// next_permutation을 통해서 다음 순열 구하기
do{
for(int i=0; i<4; i++){
cout << v[i] << " ";
}
cout << '\n';
}while(next_permutation(v.begin(),v.end()));
return 0;
}
구현 결과
1 2 3 4
1 2 4 3
1 3 2 4
...
4 2 3 1
4 3 1 2
4 3 2 1
// 첫번째 인자가 구하고자 하는 순열의 시작, 두번째 인자가 순열의 끝
bool prev_permutation (BidirectionalIterator first, BidirectionalIterator last);
// 아래처럼 직접 비교함수를 넣어줘도 됩니다.
bool prev_permutation (BidirectionalIterator first, BidirectionalIterator last, Compare comp);
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
// 1부터 4까지 저장할 벡터 선언 (배열도 가능!)
vector<int> v(4);
// 4부터 1까지 벡터에 저장
for(int i=0; i<4; i++){
v[i] = 4-i;
}
// prev_permutation을 통해서 이전 순열 구하기
do{
for(int i=0; i<4; i++){
cout << v[i] << " ";
}
cout << '\n';
}while(prev_permutation(v.begin(),v.end()));
return 0;
}
구현 결과
4 3 2 1
4 3 1 2
4 2 3 1
...
1 3 2 4
1 2 4 3
1 2 3 4