迷宫题这100通过 #include<iostream> #include<vector> #include<algorithm> #include<string> #include<queue> using namespace std; struct Point {     Point(int _x, int _y) :x(_x), y(_y) {};     int x;     int y; }; int main() {     int N;     while (cin >> N) {         vector<string> Grid(N);         for (int i = 0; i < N; ++i)             cin >> Grid[i];         vector<vector<int>> PathLength(N, vector<int>(N, -1));         int dx[] = { 1,-1,0,0 };         int dy[] = { 0,0,1,-1 };         queue<Point> que;         for(int i=0;i<N;++i)             for (int j = 0; j < N; ++j)             {                 if (Grid[i][j] == 'S') {                     que.push(Point(i, j));                     PathLength[i][j] = 0;                 }             }         int out = -1;         while (!que.empty()) {             Point p = que.front();             for (int i = 0; i < 4; ++i) {                 int nx = (p.x + dx[i]+N) % N;                 int ny = (p.y + dy[i]+N) % N;                 if (Grid[nx][ny]=='#'||PathLength[nx][ny] != -1)                     continue;                 que.push(Point(nx, ny));                 PathLength[nx][ny] = PathLength[p.x][p.y] + 1;                 if(Grid[nx][ny]=='E')                     out= PathLength[p.x][p.y] + 1;             }             que.pop();         }         cout << out << endl;     } }
点赞 评论

相关推荐

点赞 评论 收藏
分享
牛客网
牛客企业服务