반응형
https://www.acmicpc.net/problem/6603
본 문제는 University of Ulm Local Contest 1996 F번 문제다. 모든 경우의 수를 출력해야 하고, 오름차순으로 정렬해야 한다. 그렇기 때문에 next_permutation을 사용하면 쉽게 해결할 수 있다.
- n개의 숫자 중, 6개만 선택하기
- next_permutation으로 모든 경우의 수 구하기
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
27
28
29
30
31
32
33
34
35
36
|
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
while (true) {
vector<int> v;
vector<int> chk(6, 0);
int n;
scanf("%d", &n);
if (n == 0) return 0;
for (int i = 0; i < n; i++) {
int tmp;
scanf("%d", &tmp);
v.push_back(tmp);
}
// n개의 숫자 중, 6개만 선택
for (int i = 0; i < n-6; i++) {
chk.push_back(1);
}
// 모든 경우의 수 출력
do {
for (int i = 0; i < chk.size(); i++) {
if (chk[i] == 0) {
printf("%d", v[i]);
if (i != chk.size()-1) printf(" ");
}
}
printf("\n");
} while (next_permutation(chk.begin(), chk.end()));
printf("\n");
}
return 0;
}
|
cs |
반응형
'백준' 카테고리의 다른 글
[백준] 7569 - 토마토, C++ (0) | 2020.01.08 |
---|---|
[백준 2468] 안전 영역, C++ (0) | 2020.01.07 |
[백준] 2583 - 영역 구하기, C++ (0) | 2020.01.07 |
[백준] 11403 - 경로 찾기, C++ (0) | 2020.01.07 |
[백준] 1697 - 숨바꼭질, C++ (0) | 2020.01.06 |
댓글