int main( ){ //主函数 MazeType maze; PostType start,end; InitMaze(maze);//初始化并创建迷宫 start.r=1;start.c=1;//迷宫入口坐标 end.c=8;end.r=8; //迷宫出口坐标 PrintMaze(maze); MazePath(maze,start,end); PrintMaze(maze);//打印路径 return 0; }
void TestMaze() { int a[n][n] = {}; GetMaze((int *)a, n); PrintMaze((int *)a, n); stack<Pos> path; Pos entry = { 2, 0 }; bool ret = MazePath((int *)a, n, entry, path); cout << "ÊÇ·ñÓÐͨ·" << ret << endl; PrintMaze((int *)a, n); }
int main() { int sto[N][N]; int n; //迷宫行 printf("请输入迷宫的数 n="); scanf("%d",&n); struct mark start,end; //start,end入口和出口的坐标 int add[4][2]={{0,1},{1,0},{0,-1},{-1,0}};//行增量和列增量 方向依次为东西南北 initmaze(sto,n);//建立迷宫 start.x=1; start.y=1; end.x=n; end.y=n; MazePath(start,end,sto,add); //find path return 0; }
void main() { PosType begin,end; int i,j,x,y,x1,y1; printf("请输入迷宫的行数,列数(包括外墙):"); scanf("%d,%d",&x,&y); for(i=0;i<x;i++) /* 定义周边值为0(同墙) */ { m[0][i]=0; /* 行周边 */ m[x-1][i]=0; } for(j=1;j<y-1;j++) { m[j][0]=0; /* 列周边 */ m[j][y-1]=0; } for(i=1;i<x-1;i++) for(j=1;j<y-1;j++) m[i][j]=1; /* 定义通道初值为1 */ printf("请输入迷宫内墙单元数:"); scanf("%d",&j); printf("请依次输入迷宫内墙每个单元的行数,列数:\n"); for(i=1;i<=j;i++) { scanf("%d,%d",&x1,&y1); m[x1][y1]=0; /* 定义墙的值为0 */ } printf("迷宫结构如下:\n"); Print(x,y); printf("请输入起点的行数,列数:"); scanf("%d,%d",&begin.x,&begin.y); printf("请输入终点的行数,列数:"); scanf("%d,%d",&end.x,&end.y); if(MazePath(begin,end)) /* 求得一条通路 */ { printf("此迷宫从入口到出口的一条路径如下:\n"); Print(x,y); /* 输出此通路 */ } else printf("此迷宫没有从入口到出口的路径\n"); }