


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 详细讲解2024年CPMM知识点试题及答案
- 高职单招职业适应性测试模拟试题及答案(四)
- 诗词的情感共鸣探讨试题及答案
- 统编版五年级语文下册《语文园地六》精美课件
- 2025年报名机构与学员合同模板
- 2025年多功能抑尘车合作协议书
- 2025年植物原药合作协议书
- 离婚协议书一儿一女的(2025年版)
- 2025年摩托车协议过户 模板
- 2025年度茶叶加工厂租赁与茶叶包装设计合作合同
- 2025年医保政策法规考试题库及答案试卷(宣传解读)
- 基于社区的慢性病预防策略研究
- 红酒-价格表格
- 2025年机电实务考试题型及答案
- CRH5动车组转向架
- 北京市西城区2024-2025学年高三上学期期末考试英语试题【含答案解析】
- 心肺复苏术课件2024新版
- 安全环保职业健康法律法规清单2024年
- 五年级下册猜字谜(课堂PPT)
- 临时用电日常巡查记录参考表
- 浅谈新课改理念下农村幼儿园教育活动创新模式-最新资料
评论
0/150
提交评论