ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

    댓글

Designed by black7375.