广搜水题,不用我多说了吧,复习一下广搜
#includeusing namespace std;const int N=1550;const int maxn=1e6+7;int n;int xx,yy,x,y;char ditu[N][N];int fx[5]={ 0,0,1,0,-1};int fy[5]={ 0,1,0,-1,0};int a[maxn][4];bool vis[N][N]; bool can[N][N];int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cin>>ditu[i][j]; if(ditu[i][j]=='0') can[i][j]=true; } } cin>>x>>y>>xx>>yy; int t=0,w=1; vis[x][y]=true; a[1][1]=x; a[1][2]=y; a[1][3]=0; while(t 0&&dy>0&&dx<=n&&dy<=n&&!vis[dx][dy]&&can[dx][dy]) { w++; vis[dx][dy]=true; a[w][1]=dx; a[w][2]=dy; a[w][3]=a[t][3]+1; if(dx==xx&&dy==yy) { printf("%d",a[w][3]); return 0; } } } } return 0;}