用C++求迷宫求解(要求8个方向)
来源:百度知道 编辑:UC知道 时间:2024/09/25 19:20:44
#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;