C++编写的迷宫.docx
- 文档编号:7226984
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:5
- 大小:14.73KB
C++编写的迷宫.docx
《C++编写的迷宫.docx》由会员分享,可在线阅读,更多相关《C++编写的迷宫.docx(5页珍藏版)》请在冰豆网上搜索。
C++编写的迷宫
#include
#include
#defineM10
#defineN10
structmark
{intx;
inty;
};
structelement
{intx,y;
intd;
};
typedefstructLStack
{structelementelem;
structLStack*next;
}*PLstack;
voidinitstack(PLstack&S)
{S=NULL;
}
intstackempty(PLstackS)
{if(S==NULL)
return1;
else
return0;
}
voidpush(PLstack&S,elemente)
{PLstackp;
p=(PLstack)malloc(sizeof(LStack));
p->elem=e;
p->next=S;
S=p;
}
intpop(PLstack&S,structelemente)
{PLstackp;
if(!
stackment(S))
{e=S->elem;
p=S;
S=S->next;
free(p);
return1;
}
eles
return0;
}
voidcreatemigong(int&maze[M][N])
{inti,j;intm,n;
printf("开始创建迷宫\n输入0表示可通\n输入1表示障碍\n");
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
scanf("%d",&maze[i][j]);
for(i=0;i<=m+1;i++)
{maze[i][0]=1;
maze[i][n+1]=1;
}
for(j=0;j<=n+1;j++)
{maze[0][j]=1;
maze[m+1][j]=1;
}
printf("你所创建的迷宫是:
\n");
for(i=0;i<=m+1;i++)
{for(j=0;j<=n+1;j+=)
printf("%2d",maze[i][j]);
printf("\n");
}
}
voidmazepath(structmarkstart,structmarkend,intmaze[M][N],intdir[4][2])
{inti,j,d,a,b;
structelementelem,e;
PLstackS1,S2;
initstack(S1);
initstack(S2);
maze[start.x][start.y]=2;
elem.x=start.x;
elem.y=start.y;
elem.d=-1;
push(S1,elem);
while(!
stackempty(S1))
{pop(S1,elem);
i=elem.x;
j=elem.y;
d=elem.d+1;
while(d<4)
{a=i+dir[d][0];
b=j+dir[d][1];
if(a==end.x&&b==end.y&&maze[a][b]==0)
{elem.x=i;
elem.y=j;
elem.d=d;
push(S1,elem);
elem.x=a;
elem.y=b;
elem.d=886;
push(S1,elem);
while(S1)
{pop(S1,e);
push(S2,e;);
}
while(S2)
{pop(S2,e);
printf("-->(%d,%d)",e.x,e.y);
}
}
if(maze[a][b]==0)
{maze[a][b]=2;
elem.x=i;
elem.y=j;
elem.d=d;
push(S1,elem);
i=a;
j=b;
d=-1;
}
d++;
}
}
prinyf("没有找到可以走出迷宫的路径\n");
}
main()
{intsto[M][N];
structmarkstart,end;
intadd[4][2]={{1,0},{0,-1},{-1,0},{0,1}};
createmigong(sto);
printf("请输入入口的横坐标,纵坐标,用逗号隔开\n");
scanf("%d,%d",&start.x,&start.y);
printf("请输入出口的横坐标,纵坐标,用逗号隔开\n");
mazepath(start,end,sto,add);
getch();
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 编写 迷宫