#include <stdio.h>
int map1[20][20] = {};
int map2[20][20] = {};
int max = 0;
int a;
void DFS(int y, int x, int n) {
if (y < 0 || y >= 19 || x < 0 || x >= 19)
return ;
if (map1[y][x] == 0){
a++;
return ;
}
if (map1[y][x] != n)
return ;
if (map2[y][x] == max)
return ;
map2[y][x] = max;
DFS(y + 1, x, n);
DFS(y - 1, x, n);
DFS(y, x + 1, n);
DFS(y, x - 1, n);
if (a > 0)
return ;
map1[y][x] = 0;
return ;
}
int check(int n) {
max++;
for (int i = 0; i < 19; i++) {
for (int j = 0; j < 19; j++) {
if (map1[i][j] == n && map2[i][j] != max) {
a = 0;
DFS(i, j, n);
}
}
}
return 0;
}
void view() {
for (int i = 0; i < 19; i++) {
for (int j = 0; j < 19; j++) {
printf("%d ", map1[i][j]);
}
printf("\n");
}
}
int main() {
view();
int x, y;
while (1) {
printf("1번 차례\n");
scanf("%d %d", &x, &y);
x--, y--;
if (map1[y][x] == 0) {
map1[y][x] = 1;
}
check(2);
check(1);
view();
printf("2번 차례\n");
scanf("%d %d", &x, &y);
x--, y--;
if (map1[y][x] == 0) {
map1[y][x] = 2;
}
check(1);
check(2);
view();
}
}
top of page

기능을 테스트하려면 라이브 사이트로 이동하세요.
수정: 2023년 12월 16일
바둑
바둑
댓글 0개
좋아요
댓글(0)
bottom of page