- 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
您可能关注的文档
最近下载
- 安全个人防护用品使用教程PPT课件.pptx VIP
- 部编人教版三年级下册语文全册教案.docx VIP
- 学前教育学 教案.docx VIP
- 高级英语(第四版)1_教学课件Lesson 2 Blackmail.ppt VIP
- Thompson_Motif-Index(翻译版).doc VIP
- 2025年商汤科技商业计划书.pptx VIP
- 一文读懂2026年中央一号文件PPT关于锚定农业农村现代化+扎实推进乡村全面振兴的意见课件.pptx VIP
- BYD比亚迪交流充电桩ACC01-07G S50-F说明书.pdf
- 郑桂华《安塞腰鼓》课堂实录.docx VIP
- 实验六视图的操作.docx VIP
原创力文档

文档评论(0)