



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/文件格式为.c#include #include #include #include #define MAX 20typedef structint row,col;int roadMAXMAX; /存储矩阵 1为墙 0为空int start_row; int start_col;/进口坐标int end_row;int end_col;/出口坐标int dingdiannum; ROAD;typedef structint entry,exit;/进出口编号int recordMAX*MAX; int queueMAX*MAX;/存储广度优先搜索访问到的顶点int visitedMAX*MAX; /*用visited数组标记图的结点是否遍历过*/SPARE;ROAD InPut(ROAD R)/手动输入迷宫/迷宫矩阵int i,j;printf(请输入迷宫的规格:n);printf( 行数= );scanf(%d,&R.row);printf( 列数= );scanf(%d,&R.col);R.dingdiannum=R.col*R.row; printf(顶点数为:%dn,R.dingdiannum);for(i=0;iR.row;i+)printf(输入 %d行 :%d ,i+1,i+1);for(j=0;j 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17n); for(y=0;y=R.row;y+)printf(第%d行为 :,y+1);for(x=0;x=R.col;x+)printf(%d ,R.roadyx);printf(n);printf(列数为: %d 行数为: %d,R.col+1,R.row+1);R.dingdiannum=(R.col+1)*(R.row+1);printf(顶点数为:%dn,R.dingdiannum);getchar();return R;ROAD RoadAuto(ROAD R)/随机构建迷宫矩阵int b,x,y;srand(int)time(NULL);b=12+(int)(6.0*rand()/(RAND_MAX+1.0);R.col=9+(int)(8.0*rand()/(RAND_MAX+1.0);/列数9=row=17R.row=6+(int)(3.0*rand()/(RAND_MAX+1.0);/行数6=col=10for(y=0;y=R.row;y+)for(x=0;xR.col;x+)if(x=0|y=0|y=R.row)R.roadyx=1;/加围墙elseR.roadyx=(int)(2.0*rand()/(RAND_MAX+1.0);R.roadyx=1;/加围墙R=PrintfRoad(R);return R;SPARE Seekpass(ROAD R,SPARE S)/广度优先收索思想,寻找到出口的路径int i,x,y,front=0,rear=1;S.entry=(R.start_row-1)*R.col+R.start_col-1;S.exit=(R.end_row-1)*R.col+R.end_col-1;for(i=0;iR.dingdiannum;i+)S.recordi=-1;/初始化S.visitedi=0;/初始化S.queuerear=S.entry;/第一个探索顶点入队,存储顶点编号S.visitedS.entry=1;/标示被访问while(front!=rear)x=S.queuefront+1%R.col;/将编号转换为坐标y=S.queuefront+1/R.col;if(S.visitedy*R.col+x+1=0&x+1R.col&R.roadyx+1=0)/向右S.visitedy*R.col+x+1=1;S.recordy*R.col+x+1=S.queuefront+1;/以与坐标为的顶点相邻的坐标顶点编号为下表存储坐标的编号S.queue+rear=y*R.col+x+1;if(y*R.col+x+1)=S.exit)return S;if(S.visited(y+1)*R.col+x=0&y+10&R.roadyx-1=0)/向左S.visitedy*R.col+x-1=1;S.recordy*R.col+x-1=S.queuefront+1;S.queue+rear=y*R.col+x-1;if(y*R.col+x-1)=S.exit)return S;if(S.visited(y-1)*R.col+x=0&y0&R.roady-1x=0)/向上S.visited(y-1)*R.col+x=1;S.record(y-1)*R.col+x=S.queuefront+1;S.queue+rear=(y-1)*R.col+x;if(y-1)*R.col+x)=S.exit)return S;front=front+1;return S;void OutPut(int col,SPARE S) int i=0,t; if(S.entry=S.exit)printf(已在出口n); elseif(S.recordS.exit!=-1)t=S.exit;printf(最短路径为:n); while(t!=S.entry)printf(%d,%d-,t/col+1,t%col+1); t=S.recordt; if(+i%5=0)printf(n); printf(%d,%d,t/col+1,t%col+1); elseprintf(实在找不到走出去的路径n);printf(n);ROAD Meunchooce(ROAD R)int a;char ch=y;printf(n*n);printf( 1.手动输入迷宫矩阵n);printf( 2.调用随机函数构建迷宫矩阵n);printf( 3.退出n);printf( 请问您想怎样构建这个迷宫矩阵.n);doprintf( 输入1-3的数字!.n);scanf(%d,&a);switch(a)case 1:R=InPut(R);break;/手动构建迷宫case 2:doprintf(nnn);R=RoadAuto(R);printf(是否重新构建迷宫y/n: );ch=getchar();while(ch=y|ch=Y);return R;break;/随机产生迷宫case 3:exit(0);while(a3);return R;main()int x;ROAD R;SPARE S;system(color 9e);/*窗口颜色函数*/R=Meunchooce(R);/菜单项,选择以怎样的方式构建迷宫printf(输入人口坐标: );scanf(%d,%d,&R.s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 配电考试题及答案
- 机设考试题及答案
- 中级财务会计(上)(山东联盟)知到智慧树答案
- 会计继续教育“行政单位会计制度”考试试题及答案
- 中外设计史知到智慧树答案
- 事业单位考试题公基真题及答案
- 2025房产电商团购合作未来市场趋势预测及应对策略协议
- 2025版房产代理销售合同范本:海外房产投资顾问
- 2025版高科技产业园区土地及房屋租赁合同模板
- 2025年度家用电器分期付款标准合同范本
- 公安科技信息化课件
- 桥梁工程支架浇筑连续箱梁的施工监理实施细则
- 2025年国家药品监督管理局直属单位招聘126人笔试模拟试题及参考答案详解
- 2025年医疗器械经营企业法律法规培训考试(含答案)
- 2025年部编版新教材语文九年级上册教学计划(含进度表)
- 2025年云南省中考数学真题含答案
- 留疆战士考试题库及答案
- 中小学老师管理办法
- 食堂工作人员食品安全培训
- 绍兴市上虞区东关片区涝区治理-五甲渡闸站建设工程报告书
- T∕CITS 146-2024 尿液有形成分名称与结果报告规范化指南
评论
0/150
提交评论