📄 mg.cpp
字号:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define m 5
#define n 5
int rear;
struct stype{
int x,y,pre;
}hq[400];
int mg[2*m+2][2*m+2];
int zx[4],zy[4];
void printlj(int rear)
{
int i;
i=rear;
do {printf("你所得的路径为(%d,%d)\n",hq[i].x,hq[i].y);
i=hq[i].pre;
}
while(i!=0);
}
path()
{int i,j,x,y,h,find,front,rear,w,q;
scanf("%d %d",&q,&w);
hq[1].x=1;
hq[1].y=1;
hq[1].pre=0;
find=0;
front=1;
rear=1;
mg[1][1]=-1;
while(front<=rear && !find)
{x=hq[front].x;
y=hq[front].y;
for(h=1;h<=4;h++)
{i=x+zx[h];
j=y+zy[h];
if(mg[i][j]==0)
{ rear++;
hq[rear].x=i;
hq[rear].y=j;
hq[rear].pre=front;
mg[i][j]=-1;
}
if(i==q && j==w)
{ printlj(rear);
find=1;
}
}
front++;}
if(!find){
printf("找不到路径");
printf("\n");
}
return 1;}
int main()
{ int i,j;
printf(" a:请你构建自己的迷宫\n");
printf(" b:输入5行5列的数组,以构件迷宫。。。。\n ");
printf(" c:系统将自动为你的迷宫加上外围墙\n");
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
scanf(" %d",&mg[i][j]);
for(i=0;i<=m+1;i++)
{mg[i][0]=1;mg[i][n+1]=1;
}
for(j=0;j<=n+1;j++){
mg[0][j]=1;
mg[m+1][j]=1;
}
printf("你的迷宫为:\n");
for(i=0;i<=m+1;i++)//输出迷宫
{ for(j=0;j<=n+1;j++)
printf(" %d",mg[i][j]);
printf("\n");}
printf(" 请输入你的出口(入口为0,0)\n");
zx[1]=1 ; zx[2]=0 ; zx[3]=-1 ;zx[4]=0 ;//定义四个方向的增量
zy[1]=0 ; zy[2]=1 ; zy[3]=0 ;zy[4]=-1 ;
path();
return 1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -