
#include <stdio.h>
int m[9][9]={{2,2,2,2,2,2,2,2,2},
{2,0,0,0,0,0,0,0,2},
{2,0,2,2,0,2,2,0,2},
{2,0,2,0,0,2,0,0,2},
{2,0,2,0,2,0,2,0,2},
{2,0,0,0,0,0,2,0,2},
{2,2,0,2,2,0,2,2,2},
{2,0,0,0,0,0,0,0,2},
{2,2,2,2,2,2,2,2,2}};
int Si,Sj,Ei,Ej,success,sp,ri[100],rj[100];
int visit(int,int);
int main(void){
sp=0; success=0;
Si=1; Sj=1; Ei=7; Ej=7;
printf("미로 탐색\n");
if (visit(Si,Sj)==0)
printf("출구를 찾을 수 없습니다.\n");
else
printf("\n");
return 0;
}
int visit(int i,int j) {
int k;
static int path=1;
m[i][j]=1;
ri[sp]=i;
rj[sp]=j;
sp++;
if (i==Ei && j==Ej) {
printf("path=%d\n",path++);
for (k=0;k<sp;k++)
printf("(%d,%d) ",ri[k],rj[k]);
printf("\n");
success=1;
}
if (m[i][j+1]==0) visit(i,j+1);
if (m[i+1][j]==0) visit(i+1,j);
if (m[i][j-1]==0) visit(i,j-1);
if (m[i-1][j]==0) visit(i-1,j);
sp--;
m[i][j]=0;
return success;
}
– · – · – · – · – · · · ·