반응형

문제 링크 : 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)

반응형

+ Recent posts