#include<iostream>
using namespace std;
int map[5][5];
int dx[4]={1,-1,0,0};
int dy[4]={0,0,-1,1};//dx[]和dy[]判断方向
int top=0,rail=1;
struct node{
int r;
int c;
int pre;//父节点
};
node q[100];//构造一个node型的数组
void print(int f)
{
if(q[f].pre!=-1)
{
print(q[f].pre);
cout<<"("<<q[f].r<<", "<<q[f].c<<")"<<endl;
}
}
void bfs(int x,int y)
{
q[top].r=x;
q[top].r=y;
q[top].pre=-1;
while(top<rail)//当队列不为空时
{
for(int i=0;i<4;i++)
{
int a=q[top].r+dx[i];
int b=q[top].c+dy[i];
if(a<0||b<0||a>5||b>5||map[a][b])
continue;
else
{//无墙,可以访问
q[rail].r=a;
q[rail].c=b;
q[rail].pre=top;
map[a][b]=1;//标记
rail++;
}
if(a==4&&b==4)
{//遇见终点
print(top);
}
}
top++;
}
}
int main()
{
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
{
cin>>map[i][j];
}
cout<<"(0,"<<" 0)"<<endl;
bfs(0,0);
cout<<"(4,"<<" 4)"<<endl;
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-675525.html