Hoon222y

Next-permutation을 이용한 다음 수열 구하기 본문

코딩/사소한 팁

Next-permutation을 이용한 다음 수열 구하기

hoon222y 2017. 3. 7. 13:27

간간히 문제를 풀다보면 주어진 수열을 전부 검색해봐야 하는 경우가 있다. 혹은 그 다음의 배열을 구해야 하는 경우가 있는게 STL에 있는 next_permutation, 혹은 prev_permutation을 통하여 쉽게 구할수 있다.


https://www.acmicpc.net/problem/10972  문제 혹은  https://www.acmicpc.net/problem/10973  해당문제가 가장 간단한 예가 될 것이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
 
using namespace std;
 
int n;
vector<int> v;
int main(){
    scanf("%d" , &n);
    v.resize(n);
    
    for(int i=0;i<n;i++)
        scanf("%d" , &v[i]);
        
    if (next_permutation(v.begin(),v.end())) {
        for (int i=0; i<n; i++)
            printf("%d " , v[i]);
    }else
        printf("-1\n");
    return 0;
}


cs


위와 같이 간단히 구현이 가능하다 . #include <algorithm>을 꼭 추가하자

Comments