ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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] 수열에서 나올 수 있는 순열은?)


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #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

    이런 식으로 결과값이 잘 나옴을 볼수있다. 결과값이 길어서 중간에 잘랐다. 




    '잡다한 지식' 카테고리의 다른 글

    bit-mask  (0) 2020.04.04
    복잡도 표기법  (0) 2020.03.27
    sort 함수 사용법  (0) 2020.03.25
    순열과 조합  (0) 2020.03.18
    자료형  (0) 2020.03.16

    댓글

Designed by Tistory.