//#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <stdio.h>
#include <string>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <list>
#include <sstream>
#include <algorithm>
#include <cstring>
#include <iomanip>
#include <cmath>
using namespace std;
const int maxn = 100 + 10;
int n,m;
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
char mg[maxn][maxn];
bool vis[maxn][maxn];
struct node
{
int x,y;
int step;
node()
{
x = y = 0;
step = 0;
}
};
void bfs()
{
node p;
queue<node> q;
q.push(p);
while(!q.empty())
{
node tmp = q.front();q.pop();
if(tmp.x == n-1 && tmp.y == n-1)
{
cout<<tmp.step<<endl;
return;
}
int xx,yy;
for(int i=0;i<4;i++)
{
xx = tmp.x + dx[i];
yy = tmp.y + dy[i];
if(mg[xx][yy]=='.'&&xx>=0&&yy>=0&&xx<n&&yy<n&&!vis[xx][yy])
{
vis[xx][yy] = 1;
node tp;
tp.x = xx;tp.y = yy;
tp.step = tmp.step + 1;
q.push(tp);
}
}
}
cout<<-1<<endl;
while(!q.empty())
q.pop();
}
int main()
{
while(cin >> n)
{
memset(vis,0,sizeof(vis));
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin>>mg[i][j];
bfs();
}
return 0;
}
迷宫探险0(纪念第一个自己写出来的迷宫题)
最新推荐文章于 2020-10-31 14:28:33 发布