본문 바로가기

알고리즘 풀이

백준 6603번 로또

https://www.acmicpc.net/problem/6603


#include <iostream>
using namespace std;
int s[49] = {0, };
int k = 0;
void printLotto(int *lotto) {
for(int i = 0 ; i < 6; ++i) {
printf("%d ", lotto[i]);
}
printf("\n");
}
void dfs(int *lotto, int depth, int startIdx, int endIdx) {
// if (endIdx - startIdx <= 5) { // 더이상 dfs 탐색이 불가할 때
// return;
// }
for (int i = startIdx ; i < endIdx ; ++i) {
lotto[depth] = s[i];
printf("%d : ", depth);
if (lotto[5] != 0) {
printLotto(lotto);
lotto[5] = 0; // 출력 후 초기화
} else { // 로또가 완성되지 않으면 다시 탐색
dfs(lotto, depth + 1, startIdx + 1, endIdx);
}
}
}
int main()
{
scanf("%d", &k);
while (k != 0) {
int lotto[6] = {0, };
for (int i = 0 ; i < k ; ++i) {
scanf("%d", &s[i]);
}
dfs(lotto, 0, 0, k);
scanf("%d", &k);
}
return 0;
}


'알고리즘 풀이' 카테고리의 다른 글

백준 9084번 동전  (0) 2018.01.24
백준 10942번 팰린드롬?  (0) 2018.01.22
백준 1987번 알파벳  (0) 2018.01.10
백준 2294번 동전2  (0) 2018.01.08
백준 2667번 단지번호붙이기  (0) 2018.01.05