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");
 }
}