c语言迷宫游戏怎么存放坐标,求解迷宫问题(c语言,很详细哦

《求解迷宫问题(c语言,很详细哦》由会员分享,可在线阅读,更多相关《求解迷宫问题(c语言,很详细哦(5页珍藏版)》请在人人文库网上搜索。

1、求迷宫问题就是求出从入口到出口的路径。在求解时 , 通常用的是 “穷举求解”的方法 ,即从入口出发 ,顺某一方向向前试探 ,若能走通 , 则继续往前走; 否则沿原路退回 ,换一个方向再继续试探 , 直至所有可能 的通路都试探完为止。为了保证在任何位置上都能沿原路退回 ( 称为回 溯 ), 需要用一个后进先出的栈来保存从入口到当前位置的路径。首先用如图 3.3 所示的方块图表示迷宫。对于图中的每 个方块,用空白表示通道 ,用阴影表示墙。所求路径必须是简单路径 , 即 在求得的路径上不能重复出现同一通道块。为了表示迷宫 , 设置一个数组 mg,其中每个元素表示一个方块的状态 , 为 0 时表示对应。

2、方块是通道 , 为 1 时表示对应方块为墙 , 如图 3.3 所示的迷 宫, 对应的迷宫数组 mg如下:int mgM+1N+1= /*M=10,N=10*/1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,1, 1,0,0,1,0,0,0,1,0,1,1,0,0,0,0,1,1,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,0,0,1,0,0,0,0,1,1,0,1,0,0,0,1,0,0,1,1,0,1,1,1,0,1,1,0,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1 ;伪代码:5 / 5c 语言描述如下:v。

3、oid mgpath() /* 路径为 :(1,1)-(M-2,N-2)*/int i,j,di,find,k;top+; /* 初始方块进栈 */Stacktop.i=1;Stacktop.j=1;Stacktop.di=-1;mg11=-1;while (top-1) /* 栈不空时循环 */i=Stacktop.i;j=Stacktop.j;di=Stacktop.di;if (i=M-2 & j=N-2) /*找到了出口 , 输出路径 */printf( 迷宫路径如下 :n);for (k=0;k=top;k+)printf(t(%d,%d),Stackk.i,Stackk.j);if。

4、 (k+1)%5=0) printf(n);printf(n);return;find=0;while (di4 & find=0) /*找下一个可走方块 */ di+;switch(di)case 0:i=Stacktop.i-1;j=Stacktop.j; break;case 1:i=Stacktop.i;j=Stacktop.j+1; break;case 2:i=Stacktop.i+1;j=Stacktop.j; break;case 3:i=Stacktop.i;j=Stacktop.j -1;break;if (mgij=0) find=1;if (find=1) /*找到了下一个可走方块 */Stacktop.di=di; /* 修改原栈顶元素的 di 值 */ top+; /* 下一个可走方块进栈 */ Stacktop.i=i; Stacktop.j=j;Stacktop.di=-1; mgij=-1; /* 避免重复走到该方块 */ else /* 没有路径可走 , 则退栈 */ mgStacktop.iStacktop.j=0;/* 让该位置变为其他 路径可走方块 */top-;printf( 没有可走路径 !n。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值