全部评论 3

  • 并非最优解,代码书写规范性还可以提高

    2025-12-28 来自 广东

    0
    • userId_undefined
      liu
      回复
      liu
      #define _CRT_SECURE_NO_WARNINGS
      // #include "bits/stdc++.h"
      #include <iostream>
      #include <queue>
      using namespace std;
      
      const int maxn = 55;
      char map[maxn][maxn];
      int dx[4] = { 0,0,-1,1 };
      int dy[4] = { -1,1,0,0 };
      bool vis[maxn][maxn];
      int n, m, sy, sx, gy, gx;
      
      class node {
      public:
      	int x, y, steps;
      };
      
      bool check(int x, int y) {
      	return x >= 1 && x <= n && y >= 1 && y <= m && map[x][y] == '.' && vis[x][y] == 0;
      }
      
      int bfs() {
      	queue<node> q;
      	q.push({ sy,sx,0 });
      	vis[sy][sx] = 1;
      	while (!q.empty()) {
      		node f = q.front();
      		q.pop();
      		if (f.x == gy && f.y == gx) {
      			return f.steps;
      		}
      		for (int i = 0; i < 4; i++) {
      			int nx = f.x + dx[i];
      			int ny = f.y + dy[i];
      			int step = f.steps + 1;
      			if (check(nx, ny)) {
      				q.push({ nx,ny,step });
      				vis[nx][ny] = 1;
      			}
      		}
      	}
      }
      
      int main() {
      	// freopen("input.in", "r", stdin);
      	// freopen("output.out", "w", stdout);
      	ios_base::sync_with_stdio(false);
      	cin.tie(nullptr);
      	cout.tie(nullptr);
      
      	cin >> n >> m >> sy >> sx >> gy >> gx;
      	for (int i = 1; i <= n; i++) {
      		for (int j = 1; j <= m; j++) {
      			cin >> map[i][j];
      		}
      	}
      	cout << bfs() << endl;
      
      	// fclose(stdin);
      	// fclose(stdout);
      	return 0;
      }
      
      

      2025-12-28 来自 广东

      0
  • 2025-11-24 来自 北京

    0
  • 本题最优解!

    2025-11-24 来自 北京

    0
暂无数据

提交答案之后,这里将显示提交结果~

首页