int mg[M+2][N+2]={
{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},
}
struct {
int i;//当前方位行
int j;//当前方位列
int di;//下一个可走方位号
}St[MaxSize];//栈
int top=-1;//初始化栈顶指针
void mgpath(int x1,int y1,int x2,int y2){
int i.j,di,find,k;
top++;
St[top].i=x1; St[top].j=y1; St[top].di=-1; mg[x1][y1]=-1;
while (top>-1){
i=St[top].i; j=St[top].j; di=St[top].di;
if (i==x2 && j==y2){
printf("迷宫路径如下:\n");
for (k=0;k<=top;k++){
printf("\t(%d,%d)",St[k].i,S[k].j);
if ((k+1)%5==0) printf("\n"); //输出5个换一行
}
printf("\n"); //找到一条路径后结束
return ;
}
find=0;
while (di<4 && find==0){
di++;
switch(di){
case 0: i=St[top].i-1; j=S[top].j;break;
case 1: i=St[top].i; j=St[top].j+1;break;
case 2: i=St[top].i+1;j=St[top].j;break;
case 3: i=St[top].i; j=St[top].j-1;break;
}
if(mg[i] [j]==0) find=1;
}
if (find==1){ //找到了下一个可走方块
St[top].di=di;//修改原栈顶的值
top++; //下一个可走方块进栈
St [top].i=i; St[top].j=j;St[top].di=-1;
mg[i] [j]=-1;//避免重复走到该方块
}
else{ //没有路径可走,进行退栈操作
mg[St[top].i] [St[top].j]=0;//让该位置变为其他路径的可走方块
top--;
}
}
printf("没有路径可走!\n");
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有