https://www.acmicpc.net/problem/10974
N의 범위가 (1 ≤ N ≤ 8) 이므로 다음 순열을 구해서 모든 순열을 구할 수 있다.
java에서는 next permutaion함수를 직접 구현해줬어야 했는데
c++은 라이브러리가 있어서 좋다...ㅠㅠ
그냥 next_permutation을 써주면 된다...!!
next_permutation을 사용할 때는 do while로 사용해줘야 한다. 무조건 한 번은 실행되어야 하기 때문.
그리고 넥퍼뮤 돌릴 자료구조는 벡터를 사용한다.
넥퍼뮤 while문이 돌아갈 때마다 현재 배열을 순차적으로 출력해주면 끝!
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 <algorithm>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> a;
for(int i=0; i<n; i++) {
a.push_back(i+1);
}
do {
for(int i=0; i<n; i++) {
cout << a[i] << ' ';
}
cout << '\n';
} while(next_permutation(a.begin(),a.end()));
return 0;
}
Colored by Color Scripter
|
|
'BOJ' 카테고리의 다른 글
[BOJ] 10971. 외판원 순회2 (DFS 풀이) (0) | 2019.06.20 |
---|---|
[BOJ] 10971. 외판원 순회2 (0) | 2019.06.20 |
[BOJ] 9095. 1, 2, 3 더하기 (0) | 2019.06.20 |
[BOJ] 6588. 골드바흐의 추측 (0) | 2019.06.18 |
[BOJ] 2609. 최대공약수와 최소공배수 (0) | 2019.06.14 |