-
반응형123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#include <stdio.h>#define WIDTH 10#define HEIGHT 10int screen[WIDTH][HEIGHT] = {0, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0, 0, 0, 0,-1,-1,-1,-1,-1,-1,-1, 0,-1, 0,-1,-1,-1,-1,-1,-1,-1, 0,-1, 0,-1,-1,-1,-1,-1, 0, 0, 0,-1, 0, 0, 0,-1,-1,-1,-1,-1, 0,-1, 0,-1,-1,-1,-1,-1,-1,-1, 0,-1, 0,-1, 0,-1,-1,-1,-1,-1, 0,-1,-1,-1, 0,-1,-1,-1,-1,-1, 0, 0, 0, 0, 0, 0};void display(){int x, y;for (x = 0; x < WIDTH; x++) {for (y = 0; y < HEIGHT; y++)printf("%3d", screen[x][y]);printf("\n");}}int flood_fill(int x, int y, int i){if (screen[x][y] == 0){screen[x][y] = i;i++;if (y + 1 < HEIGHT)i = flood_fill(x, y + 1, i); // 오른 쪽 3시if (x + 1 < WIDTH)i = flood_fill(x + 1, y, i); // 아래 쪽 6시if (y - 1 >= 0)i = flood_fill(x, y - 1, i); // 왼쪽 9시if (x - 1 >= 0)i = flood_fill(x - 1, y, i); // 위쪽 12시}return i;}int main(void){int a;display();printf("시작점을 (0, 0)으로 한 미로방문(순서표기):\n");a = flood_fill(0, 0, 1);printf("\n");display();
cs 결과:
반응형