走迷宫问题其实也是一个递归与回溯的过程。首先定义好迷宫,0表示为通路,可以通过,2表示无法通过。如果到了终点打印一条路径出来。
int maze[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, 2, 0, 2, 0, 2},
{2, 2, 0, 2, 2, 0, 2, 0, 2},
{2, 0, 0, 0, 0, 0, 0, 0, 2},
{2, 2, 2, 2, 2, 2, 2, 2, 2}};
void Pass(int X,int Y)
{
maze[X][Y]=1;
if(X==7&&Y==7)
{
printf("\n");
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
if(maze[i][j]==0)
printf(" ");
else if(maze[i][j]==1)
printf("0 ");
else
printf("1 ");
}
printf("\n");
}
}
if(maze[X+1][Y]==0)
Pass(X+1,Y);
if(maze[X-1][Y]==0)
Pass(X-1,Y);
if(maze[X][Y+1]==0)
Pass(X,Y+1);
if(maze[X][Y-1]==0)
Pass(X,Y-1);
maze[X][Y]=0; //恢复复原来状态
}
int main()
{
Pass(1,1);
}