




免费预览已结束,剩余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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 笑傲考场课件心理健康
- 2025年电子测量仪器合作协议书
- 2025年工商用制冷、空调设备合作协议书
- 心理健康防欺凌课件
- 矿山股份协议书范本
- 立秋知识课件
- 空调电气知识培训课件
- 2025年MODULE-COG检测系统项目发展计划
- 2025版电商平台融资担保合同
- 2025年度大数据分析与挖掘服务采购合同
- 清扫道路简易合同范例
- GB/T 2982-2024工业车辆充气轮胎规格、尺寸、气压与负荷
- 医院培训课件:《民法典》“医疗损害责任”逐条解读
- 2024年2个娃儿的离婚协议书模板
- 旅行社合作协议三篇
- 《微机原理》微型计算机原理全套教学课件
- 高速公路收费人员操作规范DB41-T 610-2016
- 人教版九年级(初三)物理全一册全套课件
- 2025高考物理步步高同步练习选修1第一章 动量章末检测试卷(一)含答案
- 新人教版七年级上册英语全册课件(2024年新版教材)
- 前程无忧国企招聘笔试题库
评论
0/150
提交评论