走迷宫
题目链接:走迷宫
题目描述


解题思路
广搜模板题。
可以用 s c a n f ( " scanf(" scanf("% 1 d " ) 1d") 1d") 来一位一位输入。
code
#include<iostream>
#include<cstdio>
using namespace std;
const int xn[5]={0,0,0,1,-1};
const int yn[5]={0,1,-1,0,0};
int n,sx,sy,tx,ty;
int xx[1000000];
int yy[1000000];
int s[1000000];
int a[1010][1010];
int map[1010][1010];
void bfs()
{
int hd=0,tl=1;
xx[1]=sx,yy[1]=sy;
s[1]=0;
while(hd<tl)
{
hd++;
for(int i=1;i<=4;i++)
{
int x=xx[hd]+xn[i];
int y=yy[hd]+yn[i];
if(!map[x][y]&&x<=n&&x>0&&y<=n&&y>0&&!a[x][y])
{
map[x][y]=1;
xx[++tl]=x;
yy[tl]=y;
s[tl]=s[hd]+1;
if(x==tx&&y==ty)
{
cout<<s[tl]<<endl;
return;
}
}
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%1d",&a[i][j]);
cin>>sx>>sy>>tx>>ty;
bfs();
}

1964

被折叠的 条评论
为什么被折叠?



