-
next_permutaion 함수잡다한 지식 2020. 3. 18. 20:10
이전 포스팅에서 순열을 재귀적 방법을 통해 구현해보는 걸 올린적이 있는데.
순열을 c++ <algorithm> 헤더에서 next_permutation이라는 함수를 통해 쉽게 구현하는 방식이 있어서 정리해보자 한다.
<algorithm> 헤더를 추가한 후,
next_permutation()함수에 백터의 iterator 혹은 주소를 넣으면 벡터에 다음 순열이 적용된다.
bool next_permutation(수열의 시작, 수열의 끝)
: 현재 나와 있는 수열에서 다음 순열을 구하고 true를 반환.
다음 순열이 없다면(다음에 나온 순열이 순서상 이전 순열보다 작다면) false를 반환.
코드를 통해서 자세히 알아보자. ([1,2,3,4,5] 수열에서 나올 수 있는 순열은?)
1234567891011121314151617181920212223242526#include <stdio.h>#include <vector>#include <algorithm>using namespace std;vector <int> vec;int main() {// 1부터 5까지 벡터에 저장for (int i = 1; i <= 5; i++) {vec.push_back(i);}// next_permutation을 통해서 다음 순열 구하기do {for (int i = 0; i < 5; i++) {printf("%d ", vec[i]);}printf("\n");} while (next_permutation(vec.begin(), vec.end()));return 0;}cs 이런 식으로 결과값이 잘 나옴을 볼수있다. 결과값이 길어서 중간에 잘랐다.