반응형
문제 링크 : https://www.acmicpc.net/problem/6603
6603번: 로또
문제 독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다. 로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는
www.acmicpc.net
>풀이
백트래킹 입문 문제입니다. 재귀호출을 통한 dfs를 사용했습니다.
#include <cstdio>
void dfs(int n, int depth);
int input[16];
int lotto[6];
int num;
int main() {
while (1) {
scanf("%d", &num);
if (num == 0) break;
for (int i = 0; i < num; i++)
scanf("%d", &input[i]);
dfs(0, 0);
putchar('\n');
}
}
void dfs(int n, int depth) {
if (depth == 6) {
for (int i = 0; i < 6; i++)
printf("%d ", lotto[i]);
putchar('\n');
return;
}
for (int i = n; i < num; i++) {
lotto[depth] = input[i];
dfs(i + 1, depth + 1);
}
}
(개발 환경 : vs code)
반응형
'알고리즘 (백준) > BOJ 길라잡이 (1)' 카테고리의 다른 글
백준 15686 (치킨 배달) / C++ (0) | 2020.07.13 |
---|---|
백준 14889 (스타트와 링크) / C++ (0) | 2020.07.13 |
백준 9663 (n-Queen) / C++ (0) | 2020.07.10 |
백준 5430 (AC) / C++ (0) | 2020.07.10 |
백준 1966 (프린터 큐) / C++ (0) | 2020.07.08 |