资源简介
对于一个给定的迷宫,用0、1分别表示迷宫中的通路和障碍。再分别给定你,入口和出口的坐标,求出一条从入口到出口的通路,或得不到通路。
代码片段和文件信息
#include
struct elem{
int ord; //通道块在路径上的“序号“
int xy; //此通道块 在迷宫中的坐标位置
int di; //从此通道块走向下一通道的方向
}; //栈的元素类型
int main()
{
struct elem s[10000]e; //等价于建立一个站栈 //用来存储迷宫的路径 在这里用数组来实现栈的操作
int kt; // k 用来记录栈的尾指针指向的位置,t用来记录走出迷宫的路径当前长度
int curpos[2]cursteptu[100][100]; //curpos[0]和curpos[1]用分别来存储当前的x值和y值。整个迷宫是用二维数组tu[][]来存放的
int nmenemsnsmij;
while(scanf(“%d%d“&n&m)n) //迷宫的大小,即n行,m列
{
for(i=0;i for(j=0;j scanf(“%d“&tu[i][j]); //输入迷宫,1为不能通过,0为可以通过
scanf(“%d%d“&sn&sm); //输入起始的位置(sn,sm)
scanf(“%d%d“&en&em); //输入终点(enem)
k=0; //初始化栈s 初始化记录迷宫的序列
curpos[0]=sn;curpos[1]=sm; //设定当前位置为“入口位置“
curstep=1; //探索第一步
do{
if(tu[curpos[0]][curpos[1]]==0) //当前位置是可通的即是未曾走过的通道块
{
tu[curpos[0]][curpos[1]]=1; //留下足迹,并没有把这一通道块标记为无法通过
e.ord=curstep;
评论
共有 条评论