用C++求迷宫求解(要求8个方向)

来源:百度知道 编辑:UC知道 时间:2024/09/25 19:20:44
问题描述:用二维数组表示一个迷宫,已知二个坐标点(x1,y1)、(x2,y2)表示分别表示入口点与出口点,(可从键盘上输入,也可在程序开始时赋初值),编写程序,求从入口到出口的一条路径。

#include<iostream.h>
  void search(int ,int);
  void out();
  int check(int ,int ,int);
  static int maze[8][8]={{0,0,0,0,0,0,0,0},{0,1,1,1,1,0,1,0},{0,0,0,0,1,0,1,0},
  {0,1,0,0,0,0,1,0},{0,1,0,1,1,0,1,0},{0,1,0,0,0,0,1,1},{0,1,0,0,1,0,0,0},{0,1,1,1,1,1,1,0}};
  static int fx[4]={1,-1,0,0},fy[4]={0,0,-1,1};
  static int i,j,k,total;
  void main()
  {
  int total=0;
  maze[1][1]=3;//入口坐标设置已走标志
  search(1,1);
  cout<<"Total is "<<total<<endl;//统计总步数
  }
  void search(int i,int j)
  {
  int k,newi,newj;
  for(k=1;k<=4;k++)//搜索可达方格
  {
  if(check(i,j,k)==1)
  {
  newi=i+fx[k];
  newj=j+fy[k];
  maze[newi][newj]=3;//来到新位置后,设置已走过标志
  if(newi==8&&newj==8)//如到出口则输出,否则下一步递归
  out();
  else
  search(newi,newj);
  }
  maze[i][j]=2;//某一方格只能走入死胡同
  }
  }
  void out()
  {
  int i,j;