作者:小白石 | 来源:互联网 | 2023-05-18 22:09
#include
#include
#include
using namespace std;
int main()
{
int A[7][7];
int u;
int fa[7][7]={{0}};
int record[7][7]={{0}};
queue q;
int i,j;
for (i=0;i<=4;i++)
for (j=0;j<=4;j++)
cin >> A[i][j];
u=0;
q.push(u);
record[0][0]=1;
while (q.front()!=24 && !q.empty())
{
int x=q.front()/5;
int y=q.front()%5;
if (!record[x+1][y] && x+1<=4 && A[x+1][y]!=1)
{
u=(x+1)*5+y;
fa[x+1][y]=q.front();
q.push(u);
record[x+1][y]=1;
}
if (!record[x-1][y] && x-1>=0 && A[x-1][y]!=1)
{
u=(x-1)*5+y;
fa[x-1][y]=q.front();
q.push(u);
record[x-1][y]=1;
}
if (!record[x][y+1] && y+1<=4 && A[x][y+1]!=1)
{
u=x*5+y+1;
fa[x][y+1]=q.front();
q.push(u);
record[x][y+1]=1;
}
if (!record[x][y-1] && y-1>=0 && A[x][y-1]!=1)
{
u=x*5+y-1;
fa[x][y-1]=q.front();
q.push(u);
record[x][y-1]=1;
}
q.pop();
}
int x=4;
int y=4;
int path[100];
int counter=0;
while (1)
{
path[counter++]=x*5+y;
int tempx=x,tempy=y;
if (fa[x][y]==0)
break;
x=fa[tempx][tempy]/5;
y=fa[tempx][tempy]%5;
}
printf("(0, 0)\n");
for (i=counter-1;i>=0;i--)
{
printf("(%d, %d)\n",path[i]/5,path[i]%5);
}
return 0;
}