728x90
반응형
헤더파일
#include <algorithm>
사용방법
next_permutation(arr, arr+n) // 배열
next_permutation(v.begin(), v.end()) // 벡터
현재 수열을 사전 순으로 생각했을때 다음 수열을 만들고 true를 반환
만약 현재 수열이 가장 마지막이어서 다음 수열에 존재하지 않는다면 false를 반환
순열 예시
#include <bits/stdc++.h>
using namespace std;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
int a[3] = {1, 2, 3};
do{
for(int i=0; i<3; i++)
cout << a[i];
cout << '\n';
}while(next_permutation(a, a+3));
return 0;
}
결과
조합 예시
ex) 1,2,3,4 에서 수 2개를 순서없이 뽑는 모든 경우를 출력
#include <bits/stdc++.h>
using namespace std;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
int a[4] = {0, 0, 1, 1};
do{
for(int i=0; i<4; i++){
if(a[i] == 0)
cout << i+1;
}
cout << '\n';
}while(next_permutation(a, a+4));
return 0;
}
결과
참고
https://www.youtube.com/watch?v=Enz2csssTCs&t=3s
728x90
반응형
'알고리즘 > C++' 카테고리의 다른 글
[C++] lower_bound, upper_bound (이진탐색)/ 예제 (0) | 2023.01.01 |
---|---|
[C++] 1e9, 2e9 뜻 (0) | 2023.01.01 |
[C++] vector - find 함수 (값의 존재 유무 확인 & 위치 구하기) (0) | 2022.12.29 |
[C++] 수 거듭 제곱하기 (POW 함수) (0) | 2022.12.29 |
[C++] 숫자 한자리씩 분리하기 (0) | 2022.12.29 |