#include<bits/stdc++.h>
using namespace std;
int dx[5]={0,0,0,1,-1};
int dy[5]={0,1,-1,0,0};
int n,qi,qj,zi,zj,head=0,tail=1,k;
int b[1005][1005],q[1000005][4];
char a[1005][1005];
bool pd(int i1,int jjj){
if(i1<1 || i1>n)
return false;
if(jjj<1 || jjj>n)
return false;
if(b[i1][jjj]==1)
return false;
if(a[i1][jjj]=='1'){
cout<<i1<<" "<<jjj<<" "<<endl<<a[i1][jjj]<<endl;
return false;
}
return true;
}
void bfs(int i,int j){
do{
head++;
for(k=1;k<=4;k++){
int ii=i+dx[k],jj=j+dy[k];
if(pd(ii,jj)){
tail++;
b[ii][jj]=1;
q[tail][1]=ii;
q[tail][2]=jj;
q[tail][3]=q[head][3]+1;
if(ii==zi && jj==zj)
exit(0);
}
}
}while(head<tail);
}
int main()
{
cin>>n;
for(int l=1;l<=n;l++)
scanf("%s",a[l]);
cin>>qi>>qj>>zi>>zj;
q[1][1]=qi;
q[1][2]=qj;
b[qi][qj]=1;
bfs(qi,qj);
cout<<q[tail][3];
return 0;
}
3
001
101
100
1 1 3 3
1 2
1
1 2
1
1
--------------------------------
Process exited after 11.81 seconds with return value 0
请按任意键继续. . .
a数组:
0 | 0 | 1 |
---|---|---|
1 | 0 | 1 |
1 | 0 | 0 |
它认为a[1][2]==1