반응형
https://www.acmicpc.net/problem/6603
6603번: 로또
문제 독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다. 로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는 것이다. 예를 들어, k=8, S={1,2,3,5,8,13,21,34}인 경우 이 집합 S에서 수를 고를 수 있는 경우의 수는 총 28가지이다. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2
www.acmicpc.net
본 문제는 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 |
댓글