数据结构C语言迷宫求解问题(有要求和源代码)

数据结构C语言迷宫求解问题(有要求和源代码)

ID:47518018

大小:17.96 KB

页数:6页

时间:2020-01-12

数据结构C语言迷宫求解问题(有要求和源代码)_第1页
数据结构C语言迷宫求解问题(有要求和源代码)_第2页
数据结构C语言迷宫求解问题(有要求和源代码)_第3页
数据结构C语言迷宫求解问题(有要求和源代码)_第4页
数据结构C语言迷宫求解问题(有要求和源代码)_第5页
资源描述:

《数据结构C语言迷宫求解问题(有要求和源代码)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1、迷宫求解设计一个迷宫求解程序,要求如下:ü以M×N表示长方阵表示迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。ü能任意设定的迷宫ü(选作)如果有通路,列出所有通路提示:ü以一个二维数组来表示迷宫,0和1分别表示迷宫中的通路和障碍,如下图迷宫数据为:1111111111100100010110010001011000011001101110000110001000011010001001101110110111000000011111111111入口位置:11出口位置:88ü探索过程可采用如下算法,设定当前位置的初值为入口位

2、置;do{若当前位置可通,则{将当前位置插入栈顶; 若该位置是出口位置,则结束; 否则切换当前位置的东邻方块为新的当前位置; }否则,{  若栈不空且栈顶位置尚有其他方向未经探索,  则设定新的当前位置为沿顺时针方向旋转找到的栈顶位置的下一相邻块;  若栈不空但栈顶位置的四周均不可通,  则{删去栈顶位置;  //从路径中删去该通道块        若栈不空,则重新测试新的栈顶位置,直至找到一个可通的相邻块出栈至栈空;}}}while(栈不空);#include#include#defineMaxS

3、ize32inta[30][30];intb[30][30];intm,n;typedefstruct{inti;intj;intdi;}Box;typedefstruct{Boxdata[MaxSize];inttop;}StackType;boolsereach(intX,intY,intX1,intY1);voidmain(){intX,Y,Y1,X1;memset(a,0,sizeof(a));memset(b,0,sizeof(b));//for()printf("请输入迷宫的长度和宽度");while(~scanf("%

4、d%d",&m,&n)){printf("请输入迷宫(0表示空地,1表示围墙)");for(inti=0;i

5、intf("请输入迷宫的长度和宽度");}//return0;}boolsereach(intX,intY,intX1,intY1){StackTypest;inti,j,di,find;st.top=-1;while(a[X][Y]!=0){printf("迷宫起点的行号和列号有错,请重新输入");scanf("%d%d",&X,&Y);}if(a[X][Y]==0)b[X][Y]=-1;while(a[X1][Y1]!=0){printf("迷宫终点的行号和列号有错,请重新输入");scanf("%d%d",&X1,&Y

6、1);}st.top++;st.data[st.top].i=X;st.data[st.top].j=Y;st.data[st.top].di=-1;do{find=0;i=st.data[st.top].i;j=st.data[st.top].j;di=st.data[st.top].di;while(di<4&&find==0){di++;switch(di){case0:i=st.data[st.top].i-1;j=st.data[st.top].j;break;case1:i=st.data[st.top].i;j=st.da

7、ta[st.top].j+1;break;case2:i=st.data[st.top].i+1;j=st.data[st.top].j;break;case3:i=st.data[st.top].i;j=st.data[st.top].j-1;break;}if(b[i][j]==0&&i>=0&&i=0&&j

8、].di=-1;b[i][j]=-1;find=0;}else{b[st.data[st.top].i][st.data[st.top].j]=0;st.top--;}if(i==X1&&j==Y1){pr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。