czyczyczyczyczy @ 2018-07-24 20:09:17
求帮助...
#include <bits/stdc++.h>
using namespace std;
int mapp[1010][1010],X1,Y1,X2,Y2,q[1010][5],ans;
int xx[4]={1,-1,0,0},yy[4]={0,0,-1,1},n;
bool vis[1010][1010];
void bfs(int s,int e)
{
int head=0,tail=1;
bool flag=false;
q[tail][1]=s;q[tail][2]=e;
do
{
head++;
if(flag)
{
ans++;
flag=false;
}
for(int i = 0;i < 4;i++)
{
int x=q[head][1]+xx[i],y=q[head][2]+yy[i];
if(vis[x][y] == false && mapp[x][y] == 0 && x >= 1 && x <= n && y >= 1 && y <= n)
{
vis[x][y]=true;
q[++tail][1]=x;q[tail][2]=y;
flag=true;
}
if(x == X2 && y == Y2)
{
ans++;
return;
}
}
}while(head<tail);
}
int main()
{
cin>>n;
getchar();
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= n;j++)
{
char ch;
ch=getchar();
if(ch=='1')
mapp[i][j]=1;
if(ch=='0')
mapp[i][j]=0;
}
getchar();
}
cin>>X1>>Y1>>X2>>Y2;
bfs(X1,Y1);
cout<<ans;
return 0;
}