谁能帮我改一下
2024-03-10 13:32:09
发布于:浙江
#include <iostream>
#include <queue>
using namespace std;
char Array_Node[50][50];
bool Array_Node_isgoingbe_BFS_Queue_vis[50][50];
struct Node{
int x_Array_Node,y_Array_Node;
};
int Array_dis[100][100];
int r_Array_Node_isgoingbe,c_Array_Node_isgoingbe;
int direction_dx[4] = {-1,1,0,0};
int direction_dy[4] = {0,0,-1,1};
bool check(int x,int y) {
return x >= 1 && x <= r_Array_Node_isgoingbe && y >= 1 && y <= c_Array_Node_isgoingbe && Array_Node_isgoingbe_BFS_Queue_vis[x][y] == 0 && Array_Node[x][y] == '.';
}
void bfs(int x,int y) {
queue<Node > Array_Node_isgoingbe_BFS_Queue;
Array_Node_isgoingbe_BFS_Queue.push({x,y});
Array_Node_isgoingbe_BFS_Queue_vis[x][y] = 1;
Array_dis[x][y] = 1;
while (!Array_Node_isgoingbe_BFS_Queue.empty()) {
Node t_Array_Node = Array_Node_isgoingbe_BFS_Queue.front();
Array_Node_isgoingbe_BFS_Queue.pop();
for (int i = 0;i < 4;i ++) {
int direction_xx = t_Array_Node.x_Array_Node + direction_dx[i];
int direction_yy = t_Array_Node.y_Array_Node + direction_dy[i];
if (check(direction_xx,direction_yy)) {
Array_Node_isgoingbe_BFS_Queue.push({direction_xx,direction_yy});
Array_Node_isgoingbe_BFS_Queue_vis[direction_xx][direction_yy] = 1;
Array_dis[direction_xx][direction_yy] = Array_dis[t_Array_Node.x_Array_Node][t_Array_Node.x_Array_Node] + 1;
}
}
}
}
int main () {
cin >> r_Array_Node_isgoingbe >> c_Array_Node_isgoingbe;
for (int i = 1;i <= r_Array_Node_isgoingbe;i ++) {
for (int j = 1;j <= c_Array_Node_isgoingbe;j ++) {
cin >> Array_Node[i][j];
}
}
bfs(1,1);
cout << Array_dis[r_Array_Node_isgoingbe][c_Array_Node_isgoingbe];
return 0;
}
这里空空如也
有帮助,赞一个