下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、:DebugJW.tKe OOOOOB BOH lOOBB OB BOOB BOB BBOOOOOO O OOOOOO" OOO BOH BOOB OOOOOHB OOOO OH O OH OOOOOO#in clude<stdio.h>#in clude<stdlib.h>#in clude<time.h>#defi ne stack_ ini t_size 200#defi ne stack_ in creme nt 10#defi ne ERROE 0#defi ne TRUE 1#defi ne FALSE 0#defi ne OVERFL
2、OW 0#defi ne OK 1typedef int Status;typedef structint兀int y;PosType;typedef struct int ord; /通道块在路径上的"序号”PosType seat; /通道块在迷宫中的"坐标位置”int di;/从此通道块走向下一通道块的“方向”SElemType;typedef structSElemType *base;SElemType *top; int stacksize;SqStack;int mg2020;/* 随机生成迷宫的函数/* 为了能够让尽量能通过,将能通过的块和不能通过的块数量比
3、大致为 void Random()int i,j,k;srand(time(NULL); mg10=mg11=mg1819=0;for(j=0;j<20;j+) mg0j=mg19j=1;/ 将入口、出口设置为“/* 设置迷宫外围“不可走”,2:1*/0”即可通过保证只有一个出口和入口*/for(i=2;i<19;i+)/* 设置迷宫外围“不可走”,保证只有一个出口和入口mgi0=mgi-119=1;*/for(i=1;i<19;i+)for(j=1;j<19;j+) k=rand()%3; / 随机生成 0、1、2 三个数 if(k) mgij=0;elseif(i=
4、1&&j=1)|(i=18&&j=18) /* 因为距入口或出口一步的路是必 经之路,故设该通道块为“0”加大迷宫能通行的概率*/mgij=0;elsemgij=1;/ 构造一个空栈Status InitStack(SqStack &s)s.base =(SElemType *)malloc(stack_init_size * sizeof(SElemType); if(!s.base) return OVERFLOW;s.top=s.base;s.stacksize=stack_init_size;return OK;/ 当前块可否通过Status P
5、ass(PosType e) if (mge.xe.y=0) /0 时可以通过 return OK;/ 如果当前位置是可以通过,返回1return OVERFLOW;/ 其它情况返回 0/ 留下通过的足迹Status FootPrint(PosType e) mge.xe.y=7; return OK;/ 出栈Status Pop(SqStack &s,SElemType &e) if(s.top=s.base) return ERROE;e=*-s.top; return OK;/ 压入栈Status Push(SqStack &s,SElemType e) if(s
6、.top-s.base>=s.stacksize) s.base=(SElemType *)realloc(s.base,(s.stacksize+stack_increment) *sizeof(SElemType); if(!s.base)exit(OVERFLOW); s.top=s.base+s.stacksize; s.stacksize+=stack_increment; *s.top+=e; return OK;/ 是否空栈Status StackEmpty(SqStack s) if (s.top=s.base) return OK; return OVERFLOW;/
7、留下不能通过的足迹Status MarkPrint(PosType e) mge.xe.y=3; return OK;/ 下一步PosType NextPos(PosType &e,int dir)PosType E;switch(dir)case 1:E.x=e.x; / 向下 E.y=e.y+1; break;case 2:E.x=e.x+1; / 向右 E.y=e.y; break;case 3:E.x=e.x; / 向上 E.y=e.y-1; break;case 4:E.x=e.x-1; / 向左 E.y=e.y; break;return E;/若迷宫maze中从入口 st
8、art到出口 end的通道,则求得一条存放在栈中/(从栈底到栈顶),并返回TRUE ;否则返回FALSE/ 迷宫函数Status MazePath(int mg,PosType start,PosType end,SqStack &s)PosType curpos; InitStack(s);SElemType e;int curstep;curpos=start; / 设定 "当前位置 "为" 入口位置 " curstep=1;/ 探索第一步doif(Pass(curpos) / 当前位置可通过,即是未曾走到过的通道块 FootPrint(cu
9、rpos); / 留下足迹 e.di =1;e.ord = curstep;e.seat= curpos;Push(s,e); / 加入路径 if(curpos.x=end.x && curpos.y=end.y)n0 n _ n 0能到达终点!n路径如下:n"); return TRUE;curpos=NextPos(curpos,1); / 下一位置是当前位置的东邻curstep+; / 探索下一步else/ / 当前位置不能通过 if(!StackEmpty(s)Pop(s,e);while(e.di=4&&!StackEmpty(s)MarkP
10、rint(e.seat);Pop(s,e); if(e.di<4)e.di+;Push(s,e); / 留下不能通过的标记,并退回一步 curpos=NextPos(e.seat,e.di); /* 当前位置设为新方向的相邻块 */ /if/if/elsewhile(!StackEmpty(s);printf("nn 此迷宫不能走通! n");return FALSE;/ 打印迷宫 void PrintMaze()int i,j;printf(" 运行路径 :nn"); for(i=0;i<20;i+) for(j=0;j<20;j+)
11、/迷"宫); 的“墙”/ 不通的路/ Q通")i的路径if(mgij=0)printf(" "); else if(mgij=1) printf(" else if(mgij=3) printf(" "); else if(mgij=7) printf("printf("n");printf("n");void mai n()SqStack S;PosType start,end;start.x=1;start.y=0; / 起点坐标end.x=18;end.y=19; / 终点坐标Random();printf("nnTest 1:");MazePath(mg2020,start,end,S);PrintMaze(); system("pause");Random();printf("nTest 2:");MazePat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB 48143-2026排油烟气防火止回阀
- T/YZPHJRXH 5-2024扬州市储蓄国债网点服务要求
- T/CASMES 524-2025增材制造 立体光固化成形陶瓷型芯制备技术规范
- DB32/T 5134-2025风电机组螺栓相控阵超声导波成像检测技术导则
- T/SZZS 003-2023建筑装饰装修从业工人安全生产标准
- T/GIEHA 074-2024康养空间负离子浓度评价导则
- T/CES 319-2024电力作业现场智能化安全管控系统 第4部分:数据管理与分析技术规范
- T/CCPITBSC 003-2024数字适老化能力提升 通用要求
- T/JALNCP 6101-2024井冈山杨梅
- T/HNNMIA 27-2022换向器用石墨-紫铜构件真空钎焊工艺规范
- (零模)苏州市2027届高三年级9月阳光调研试卷 生物试卷(含答案)
- 电梯更新改造工程监理规划
- 2026年托育机构生活照护员职业技能等级认定题库
- 2026年龙游经开高新控股集团有限公司及其子公司公开招聘合同制员工11人的笔试备考试题及答案详解
- 工程结算审核实施方案
- 2025年海南高考历史卷试题真题及答案详解(精校打印版)
- 正确使用酒精灯的方法
- 广州医科大学2024年临床医学(呼吸内科)内科学试题及答案
- DB52∕T 1401.26-2020 山地旅游 第26部分:景区最大承载量核定指引
- 童年第九章题目和答案
- 中风偏瘫中医护理查房
评论
0/150
提交评论