大数据结构 迷宫求解.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实用标准文案 精彩文档 【完成题目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 #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_hand_Maze(maze,m,n); } } } } void Init_automatic_Maze(int maze[M][N],int m,int n) //自动生成迷宫 { int i,j; cout\n迷宫生成中……\n\n; system(pause); for(i=1;im+1;i++) for(j=1;jn+1;j++) maze[i][j]=rand()%2; //随机生成0、1 } void PrintMaze(int maze[M][N],int row,int col) { int i,j; cout迷宫如图所示.endl; for(i=1;irow+1;i++) { for(j=1;jcol+1;j++) { if(maze[i][j]==1) co

您可能关注的文档

文档评论(0)

linlin921 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档