C++/탐구
next_permutation
WhNi
2024. 4. 8. 16:10
<algorithm>헤더에 있는 함수이며
사전순으로 오는 순열을 생성하는 기능을 가지고 있다.
특히 완전탐색이라던가 조합의 모든 경우를 구하는 문제에서 주로 활용할 수 있을거 같다.
사용할때는 주로 do while 문과 자주 쓰이게 된다.
왜냐하면, 함수가 호출될떄마다 주어진 범위의 요소를 순열로 배치하기 때문에 모든 순열을 반복할 수 있다. (do while로 처음 상태까지 포함해서 배치)
sort(numbers.begin(), numbers.end());
do
{
for (int j = 1; j <= numbers.size(); j++)
{
string sub = numbers.substr(0, j);
int num = stoi(sub);
x.emplace_back(num);
}
} while (next_permutation(numbers.begin(), numbers.end()));
함수를 쓸때 미리 오름차순으로 정렬을 해둬야 정확한 순열의 모든 경우의 수가 나오기 때문에 미리 sort해주는 것이 중요하다.