int maze[7][10] = {1,1,1,1,1,1,1,1,1,1,
1,0,1,0,1,0,0,0,0,1,
1,0,1,0,1,0,1,1,0,1,
1,0,1,0,1,1,1,0,0,1,
1,0,1,0,0,0,0,0,1,1,
1,0,0,0,1,1,1,0,0,1,
1,1,1,1,1,1,1,1,1,1};
int find_path(int x,int y)
{
if(x == 1 && y == 1) //是否是迷宫出口
{
maze[x][y] = 2; //记录最后走过的路径
return 1;
}
else
if(maze[x][y] == 0 ) //是不是可以走
{
maze[x][y] = 2 ; //记录已经走过的路径
if((find_path(x-1,y)+ //调用递归函数往上
find_path(x+1,y)+ //往下
find_path(x,y-1)+ //往左
find_path(x,y+1)) > 0 ) //往右
return 1;
else
{
maze[x][y] = 0 ; //此路不通取消记录
return 0;
}
}
else
return 0;
}
int main()
{
int i,j;
find_path(5,8); //调节器用递归函数
printf("path:\n");
for(i=1;i<6;i++) //输出迷宫的图形
{
for(j=1;j<9;j++)
printf("%d",maze[i][j]); //输出各坐标
printf("\n");
}
}
浙公网安备 33010602011771号