#include<stdio.h>
int map[7][7] = {{2, 2, 2, 2, 2, 2, 2},
{2, 0, 0, 0, 0, 0, 2},
{2, 0, 2, 0, 2, 0, 2},
{2, 0, 0, 2, 0, 2, 2},
{2, 2, 0, 2, 0, 2, 2},
{2, 0, 0, 0, 0, 0, 2},
{2, 2, 2, 2, 2, 2, 2}};
int visit(int x, int y);
void print_path();
int success;
int start_x, start_y;
int end_x, end_y;
int sp, ri[100], rj[100];
void main()
{
sp = 0;
start_x = 1;
start_y = 1; // 시작지점
end_x = 5;
end_y = 5; // 최종도착지점
success = 0;
printf("미로 찾기\n");
if(!visit(1,1))
printf("출구를 찾을 수 없습니다.");
}
int visit(int x, int y)
{
map[x][y] = 1; // 지나간 위치를 표시
ri[sp] = x;
rj[sp] = y;
sp++;
if( x == end_x && y == end_y) // 최종 도착지점
{
print_path();
success = 1;
}
if( success == 0 && map[x][y+1] == 0)
visit(x, y+1);
if( success == 0 && map[x+1][y] == 0)
visit(x +1, y);
if( success == 0 && map[x][y-1] == 0)
visit(x, y -1);
if( success == 0 && map[x-1][y] == 0)
visit(x-1, y);
sp--;
return success;
}
void print_path()
{
int k;
for(k =0; k < sp; k++)
printf("(%d,%d) ", ri[k], rj[k]);
}