数据结构迷宫求解.pdfVIP

  • 8
  • 0
  • 约1.07万字
  • 约 11页
  • 2021-03-07 发布于福建
  • 举报
【完成题目 3】迷宫求解 【问题描述】 以一个 m*n 的长方阵表示迷宫, 0 和 1 分别表示迷宫中的通路和障碍。设计一个程序, 对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 【基本要求】 首先实现一个栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组 (i,j,d) 的形式输出,其中 (i,j) 指示迷宫中的一个坐标, d 表示走到下一坐标的方向。 【算法设计】 本实验的目的是设计一个程序,实现手动或者自动生成一个 n×m矩阵的迷宫,寻找一 条从入口点到出口点的通路。我们将其简化成具体实验内容如下: 选择手动或者自动生成一个 n×m的迷宫,将迷宫的左上角作入口,右下角作出口,设 “0 ”为通路, “1”为障碍,即无法穿越。假设从起点出发,目的为右下角终点,可向“上、 下、左、右、左上、左下、右上、右下” 8 个方向行走。如果迷宫可以走通,则用“■”代 表“ 1”,用“□”代表“ 0”,用“→”代表行走迷宫的路径。输出迷宫原型图、迷宫路线图 以及迷宫行走路径。如果迷宫为死迷宫,输出信息。 可以二维数组存储迷宫数据, 用户指定入口下标和出口下标。 为处理方便起见, 可在迷 宫的四周加一圈障碍。对于迷宫中任一位置,均可约定有东、南、西、北四个方向可通。 本程序包含三个模块 1) 主程序模块: void main() { 初始化 ; do { 接受命令 ; 处理命令 ; } while ( 命令 ! = 退出 ); } 2) 栈模块——实现栈抽象数据类型; 3) 迷宫模块——实现迷宫抽象数据类型。 【源代码】 #includestdlib.h // 库中包含 system(pause) 和 rand() 函数 #includestdio.h //c 语言里的库 #includeiostream #include malloc.h #define OK 1 1 / 11 #define ERROR 0 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define OVERFLOW -1 #define M 49 #define N 49 using namespace std; int maze[M][N]; typedef int Status; typedef struct { int m,n,direc; }MazeType,*LMazeType; typedef struct { LMazeType top; LMazeType base; int stacksize; int over; }Stack; void Init_hand_Maze(int maze[M][N],int m,int n) { int i,j; for(i=1;i=m+1;i++) for(j=1;j=n+1;j++) { maze[i][j]=1; } cout 请按行输入迷宫, 0 表示通路, 1 表示障碍 :endl; for(i=1;im+1;i++) for(j=1;jn+1;j++) cinmaze[i][j]; for(i=1;im+1;i++) { for(j=1;jn+1;j++) { if(maze[i][j]!=0maze[i][j]!=1){ cout 您输入有误,请重新输入 ; Init_han

文档评论(0)

1亿VIP精品文档

相关文档