走迷宫(广搜)

#include<bits/stdc++.h>
using namespace std;
int u[4]={0,1,0,-1};
int v[4]={1,0,-1,0};
int r,c;
int book[45][45];
char mg[45][45];
void zmg()
{
int dl[1605][3],b[1605];
int head=0,tail=1,tx,ty;
dl[1][1]=1;dl[1][2]=1;
book[1][1]=1;b[1]=1;
do
{
head++;
for(int i=0;i<=3;i++)
{
tx=dl[head][1]+u[i];
ty=dl[head][2]+v[i];
if(tx>0&&tx<=r&&ty>0&&ty<=c&&!book[tx][ty]&&mg[tx][ty]=='.')
{
tail++;
dl[tail][1]=tx;
dl[tail][2]=ty;
book[tx][ty]=1;
b[tail]=b[head]+1;
if(tx==r&&ty==c)
{
cout<<b[tail];
return;
}
}
}
}while(head<tail);
}
int main()
{
cin>>r>>c;
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
cin>>mg[i][j];
zmg();
}

posted @ 2021-04-18 10:03  映波yoyo  阅读(75)  评论(0编辑  收藏  举报