-
[C++] next_permutaion(), prev_permutation()언어/C++ 2021. 3. 2. 20:34
next_permutation(), prev_permutation()
순열 구할 때 사용
둘 다 Algorithm 라이브러리에 있음next_permutation()
현재 나와 있는 수열에서 인자로 넘어간 범위에 해당하는 다음 순열을 구하고 true를 반환
다음 순열이 없다면(다음에 나온 순열이 순서상 이전 순열보다 작다면) false를 반환구현 코드
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main(){ vector<int> v; // 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
prev_permutation()
현재 나와 있는 수열에서 인자로 넘어간 범위에 해당하는 이전 순열을 구하고 true를 반환
이전 순열이 없다면(다음에 나온 순열이 순서상 이전 순열보다 크다면) false를 반환구현 코드
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main(){ vector<int> v; // 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
'언어 > C++' 카테고리의 다른 글
[C++] 공백 포함한 문자열 입력 받기 (0) 2021.04.18 Algorithm 라이브러리 - reverse() (0) 2021.01.23 String 라이브러리 - s.back(), s.pop_back() (0) 2021.01.23 댓글