Notice
Recent Posts
Recent Comments
:: ADVANCE ::
[BaekJoon][2580] 스도쿠 본문
반응형
BAEKJOON ONLINE JUDGE
https://www.acmicpc.net/problem/2580
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | #include <stdio.h> typedef struct tagpoint { int x; int y; }POINT; POINT p[90]; int size; int nemo[9][10]; int horizon[9][10]; int vertical[9][10]; int map[9][9]; int flag; void input() { int i, j; int idx = 0; for (i = 0; i < 9; i++) { for (j = 0; j < 9; j++) { scanf("%d", &map[i][j]); if (!map[i][j]) { p[idx].y = i; p[idx].x = j; idx++; } else { nemo[3 * (i / 3) + (j / 3)][map[i][j]] = 1; horizon[i][map[i][j]] = 1; vertical[j][map[i][j]] = 1; } } } size = idx; } void print() { int i, j; for (i = 0; i < 9; i++) { for (j = 0; j < 9; j++) { printf("%d ", map[i][j]); } printf("\n"); } } void process(int idx) { int i; int number[10] = { 0, }; if (flag) return; if (idx == size) { print(); flag = 1; return; } for (i = 1; i < 10; i++) { number[i] = 1; if (nemo[3 * (p[idx].y / 3) + p[idx].x / 3][i]) number[i] = 0; else if (horizon[p[idx].y][i]) number[i] = 0; else if (vertical[p[idx].x][i]) number[i] = 0; if (number[i]) number[0]++; } if (!number[0]) return; for (i = 1; i < 10; i++) { if (number[i]) { map[p[idx].y][p[idx].x] = i; nemo[3 * (p[idx].y / 3) + p[idx].x / 3][i] = 1; horizon[p[idx].y][i] = 1; vertical[p[idx].x][i] = 1; process(idx + 1); nemo[3 * (p[idx].y / 3) + p[idx].x / 3][i] = 0; vertical[p[idx].x][i] = 0; horizon[p[idx].y][i] = 0; map[p[idx].y][p[idx].x] = 0; } } } int main() { input(); process(0); return 0; } | cs |
스도쿠 문제
반응형
'Algorithm > ES (완전탐색)' 카테고리의 다른 글
[BaekJoon][2146] 다리 만들기 (0) | 2016.06.25 |
---|---|
[BaekJoon][1261] 알고스팟 (1) | 2016.06.09 |
[BaekJoon][2823] 유턴 싫어 (0) | 2016.04.11 |
[BaekJoon][2816] 디지털 티비 (0) | 2016.04.11 |
[dovelet][BFS] 도망간 소를 잡아라 / catch_cow (0) | 2015.01.16 |
Comments