首页 2021年一个走迷宫的程序 电脑资料

2021年一个走迷宫的程序 电脑资料

举报
开通vip

2021年一个走迷宫的程序 电脑资料一个走迷宫的程序电脑资料本文给出一个c语言版的走迷宫的程序,1.迷宫的表示。迷宫用结构体MATRIX来表示包括迷宫矩阵迷宫的宽,迷宫的高,迷宫入口的坐标,迷宫出口的坐标。结构体定义如下:typedefstructstep{intx;//行坐标inty;//列坐标}STEP;typedefstructtrix{intdata[MAXWIDTH+2][MAXWIDTH+2];//迷宫数据,0:表示有路,1:表示墙intwidth;//矩阵(迷宫)的宽,包括最左和最有2堵墙intheight;//矩阵(迷宫)的宽,包括顶...

2021年一个走迷宫的程序 电脑资料
一个走迷宫的程序电脑资料本文给出一个c语言版的走迷宫的程序,1.迷宫的表示。迷宫用结构体MATRIX来表示包括迷宫矩阵迷宫的宽,迷宫的高,迷宫入口的坐标,迷宫出口的坐标。结构体定义如下:typedefstructstep{intx;//行坐标inty;//列坐标}STEP;typedefstructtrix{intdata[MAXWIDTH+2][MAXWIDTH+2];//迷宫数据,0:表示有路,1:表示墙intwidth;//矩阵(迷宫)的宽,包括最左和最有2堵墙intheight;//矩阵(迷宫)的宽,包括顶部和底部2堵墙STEPentran;//迷宫入口STEPexit;//迷宫出口}MATRIX;迷宫矩阵的每一个元素可以是0或1,0表示可走,1表示是墙,走不通。为了便于检查是否越界,即坐标超过迷宫的范围。在迷宫的4个边增加了全1数据,表示4堵墙,这样,在任何时候,都不会越界。下面的数据表示1个5×5的迷宫,增加了4堵墙后,实际宽度和高度变为7,迷宫变成1个7×7的矩阵1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,0,1,0,1,1,1,0,0,1,1,1,1,1,0,1,0,0,0,1,1,0,0,0,1,0,1,1,1,1,1,1,1,1,2.算法走迷宫的路径的每一步可用二元组(x,y)来表示。已经走过的路径放入数组path。首先,将入口的坐标放入数组,此时path数组的元素个数为1.接下来使用下面的规则,试图找到一条出路1.从当前位置(即数组的最后一个元素),从右,下,左,上四个方向搜索,看能否走通。如果可找到一条通路,则将新的位置的坐标放入path数组,数组长度加1.如果新的位置的坐标等于出口的坐标,搜索结束。如果从各个方向都走不通,则将迷宫当前位置的元素置为1,这样,当前点就变成墙,下次就不会走到这个位置了。并将数组的最有一个元素丢弃,数组长度减1如果数组的长度为0,没有任何路径可以走通,搜索结束。全部的代码见下:[cpp]viewplaincopy#include#include#include#include#defineMAXWIDTH30#defineMAXHEIGHT30typedefstructstep{intx;//行坐标inty;//列坐标}STEP;typedefstructtrix{intdata[MAXWIDTH+2][MAXWIDTH+2];//迷宫数据,0:表示有路,1:表示墙intwidth;//矩阵(迷宫)的宽,包括最左和最有2堵墙intheight;//矩阵(迷宫)的宽,包括顶部和底部2堵墙STEPentran;//迷宫入口STEPexit;//迷宫出口}MATRIX;MATRIXgtrix=//初始化为一个迷宫,程序也能从文件中读入迷宫数据{{{1,1,1,1,1,1,1},{1,0,0,0,0,0,1},{1,1,0,1,0,1,1},{1,0,0,1,1,1,1},{1,0,1,0,0,0,1},{1,0,0,0,1,0,1},{1,1,1,1,1,1,1},},7,7,//7行,7列,包括4堵墙{1,1},//入口坐标{5,5}//出口坐标};staticSTEPsshift[]={{1,0},//向右走,x++,y不变{0,1},//向下走,x不变,y++{-1,0},//向左走,x--,y不变{0,-1}//向上走,x不变,y--};voidprintpaths(STEPpath[],intpathlen)//打印走迷宫的路径{inti;for(i=0;i{if(i>0)printf("->");printf("(%d,%d)",path[i].x,path[i].y);}}voidprintMatrix(MATRIX*pMatrix)//打印迷宫数据,迷宫数据包含4堵墙{inti,j;for(i=0;iheight;i++){for(j=0;jwidth;j++){if(j!=0)printf("");printf("%d",pMatrix->data[i][j]);}printf("\n");}}intsearchpath(inttric[MAXWIDTH+2][MAXWIDTH+2],STEPpath[],intpathlen,STEPexit){while(1){inti,bFind;STEPnewPos;for(bFind=0,i=0;i{newPos.x=path[pathlen-1].x+sshift[i].x;newPos.y=path[pathlen-1].y+sshift[i].y;if(pathlen==1){if(gtrix.data[newPos.x][newPos.y]==0){bFind=1;break;//找到一个位置}}//path[pathlen-1]表示当前位置,path[pathlen-2]表示上一步的位置,//如果新的位置等于上一个位置,将陷入循环,故要求新的位置不能是上一步的位置elseif((newPos.x!=path[pathlen-2].x||newPos.y!=path[pathlen-2].y)&>rix.data[newPos.x][newPos.y]==0){bFind=1;break;//找到一个位置}}if(bFind){path[pathlen++]=newPos;//将新的位置追加到path数组,路径长度+1if(newPos.x==exit.x&&newPos.y==exit.y)returnpathlen;}else{tric[path[pathlen-1].x][path[pathlen-1].y]=1;//从当前位置,无路可走,将当前位置标记为墙模板,内容仅供参考
本文档为【2021年一个走迷宫的程序 电脑资料】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
贤阅网络信息
信息咨询服务,软件咨询服务,整理模板范文等。
格式:doc
大小:23KB
软件:Word
页数:0
分类:
上传时间:2021-10-15
浏览量:0