#include<iostream>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
#include<cstring>
#include<cstdio>
#include<map>
#include<cctype>
#define ll long long
#define go(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
struct node{
int r;
int c;
};
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
int vis[5][5];
char mapp[5][5];
node father[5][5];
vector<node>nodes;
queue<node>fun;
void print(node u)
{
while(1)
{
nodes.push_back(u);
if(u.r==0&&u.c==0) break;
u=father[u.r][u.c];
}
for(int i=nodes.size()-1;i>=0;i--)
{
cout<<"("<<nodes[i].r<<", "<<nodes[i].c<<")"<<endl;
}
}
void bfs()
{
node f;
f.r=0;
f.c=0;
vis[0][0]=1;
fun.push(f);
while(fun.size())
{
node font=fun.front();
fun.pop();
if(font.r==4&&font.c==4)
{
print(font);
return;
}
for(int i=0;i<4;i++)
{
int xx=font.r+dx[i];
int yy=font.c+dy[i];
node p;
p.r=xx;
p.c=yy;
if(xx>=0&&xx<=4&&yy>=0&&yy<=4&&vis[xx][yy]==0&&mapp[xx][yy]!='1')
{
vis[xx][yy]=1;
father[xx][yy]=font;
fun.push(p);
}
}
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
cin>>mapp[i][j];
}
}
bfs();
return 0;
}
poj3984迷宫问题
最新推荐文章于 2025-05-16 14:00:49 发布