免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告题目:迷宫问题迷宫四周设为墙;无填充处为可通达处。设每个点有四个可通方向,分别为东南西北。左上角为入口,右下角为出口。迷宫有一个出口,一个入口。设计程序求解迷宫的一条通路。算法:#include#include#define MaxSize 15/定义迷宫的最大行列数为15using namespace std;int MazeMaxSizeMaxSize;int curstep=1;struct Locateint x;/横坐标属性xint y;/列坐标属性y;struct SElemint ord;Locate seat;int d;/方向属性d(03分别表示东南西北); struct SqStackSElem *base;SElem *top;int stacksize;int InitStack(SqStack *S)(*S).base=(SElem *)malloc(10*sizeof(SElem);if(!(*S).base)exit(0);(*S).top=(*S).base;(*S).stacksize=10;return 1;int StackEmpty(SqStack S)if(S.top=S.base)return 1;elsereturn 0;int Push(SqStack *S, SElem e)if(*S).top-(*S).base=(*S).stacksize)(*S).base=(SElem *)realloc(*S).base , (*S).stacksize+2)*sizeof(SElem);if(!(*S).base)exit(0);(*S).top=(*S).base+(*S).stacksize;(*S).stacksize+=2;*(*S).top)+=e;return 1;int Pop(SqStack *S,SElem *e)if(*S).top=(*S).base)return 0;*e=*-(*S).top;return 1;int Pass(Locate b)if(Mazeb.xb.y=0)return 1;elsereturn 0;void FootPrint(Locate a)Mazea.xa.y=curstep;Locate NextLocate(Locate c,int d)Locate move4=0,1,1,0,0,-1,-1,0;/把东南西北依次编号为0、1、2、3放在增量数组move4中c.x+=moved.x;c.y+=moved.y;return c;void MarkPrint(Locate b)Mazeb.xb.y=-1;/定义迷宫不能通过路径为-1 int Mazepath(Locate start,Locate end) SqStack S;Locate curloc;SElem e;InitStack(&S);curloc=start;doif(Pass(curloc)FootPrint(curloc);e.ord=curstep;e.seat.x=curloc.x;e.seat.y=curloc.y;e.d=0;Push(&S,e);curstep+;if(curloc.x=end.x&curloc.y=end.y)/到达出口 return 1;curloc=NextLocate(curloc,e.d);elseif(!StackEmpty(S)Pop(&S,&e);curstep-;while(e.d=3&!StackEmpty(S)MarkPrint(e.seat);/不能通过的路径标记为-1Pop(&S,&e);/后退一步 curstep-;if(e.d3)/若还没向北探索 e.d+;Push(&S,e);curstep+;curloc=NextLocate(e.seat,e.d);while(!StackEmpty(S);return 0; void PrintMaze(int x,int y)for(int i=0;ix;i+)for(int j=0;jy;j+)coutsetw(4)leftMazeij;coutendl;int main()Locate begin,end;int i,j,x,y,x1,y1;coutxy;for(i=0;ix;i+)/定义墙元素值为1Maze0i=1;Mazex-1i=1;for(j=1;jy-1;j+)Mazej0=1; Mazejy-1=1;for(i=1;ix-1;i+)for(j=1;jy-1;j+)Mazeij=0;/定义可通过路径为0coutj;cout请依次输入迷宫内部每个“障碍物”所在的行列数:endl;for(i=1;ix1y1;Mazex1y1=1;/定义墙的值为1cout迷宫结构如下:endl;PrintMaze(x,y);cout请输入起点和终点所在行列数:begin.xbegin.yend.xend.y;/*begin.x=1;begin.y=1;end.x=x-2;end.y=y-2;/定义起点与终点位置*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国农业发展银行湖南省分行校园招聘备考题库附答案详解(预热题)
- 2025黑龙江双鸭山饶河县招聘社区工作者37人备考题库及答案详解(各地真题)
- 2026中国建设银行远程智能银行中心校园招聘10人备考题库含答案详解(综合卷)
- 2025黑龙江七台河茄子河区招聘农垦、森工社区工作者7人备考题库含答案详解(夺分金卷)
- 吉林银行2026届秋季校园招聘备考题库含答案详解(培优a卷)
- 2025广西防城港市东兴边检招聘辅警15人备考题库及答案详解(新)
- 2026建信基金管理有限责任公司校园招聘9人备考题库带答案详解
- 2025广东广州市海珠区新港街道第二批雇员招聘4人备考题库含答案详解(精练)
- 2025广西崇左市江州区消防救援大队政府专职消防员公开招聘备考题库附答案详解
- 2026年吉林银行秋季校园招聘备考题库附答案详解(能力提升)
- 建筑工程述标汇报
- 【建筑监理大纲】工商银行某分行营业部综合楼装修改造内、外装修工程监理大纲
- 阿尔派CD机CDX-A08说明书
- 安检员X光机培训
- 操作系统-002-国开机考复习资料
- 农业的分布(经济作物、三大林区和四大牧区的分布)(课件)七年级地理下册(沪教版)
- 垃圾压缩站管理制度
- 第12课《诗经二首-蒹葭》课件
- 北京市海淀区2023-2024学年高二下学期期末考试英语试卷(含答案)
- 污泥运输合同协议书
- 和解协议书限高模板
评论
0/150
提交评论