社区讨论
我的代码有没有错
灌水区参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m2nbu9xj
- 此快照首次捕获于
- 2024/10/24 21:16 去年
- 此快照最后确认于
- 2025/11/04 16:17 4 个月前
这个是BFS的迷宫问题代码,这么多变量好像cnt变量没有用上
直接上代码
CPP#include<bits/stdc++.h>
using namespace std;
int n, m, startx, starty, endx, endy, vis[1005][1005], mp[1005][1005], cnt, flag;
int dx[] = { 0, 0, 1, -1 };
int dy[] = { 1, -1, 1, 1 };
struct Point
{
int x;
int y;
int step;
Point(int _x, int _y, int _step) :x(_x), y(_y), step(_step){}
};
queue<Point> q;
int main()
{
cin >> n >> m;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> mp[i][j];
}
}
cin >> startx >> starty >> endx >> endy;
Point start(startx, starty, 0); // 设置起点
q.push(start);
while (!q.empty())
{
int x = q.front().x;
int y = q.front().y;
if (x == endx && y == endy)
{
flag = 1;
cout << q.front().step << endl;
break;
}
for (int k = 0; k < 5; k++)
{
int tempX, tempY;
tempX = x + dx[k];
tempY = y + dy[k];
if (mp[tempX][tempY] == 1 && vis[tempX][tempY] == 0) // 如果这个是空地并且没有访问
{
Point temp(tempX, tempY, q.front().step + 1);
q.push(temp);
vis[tempX][tempY] = 1; // 设置成已访问状态
}
q.pop();
}
}
if (flag == 0)
{
cout << "No answer" << endl;
}
return 0;
}
直接上代码
跪求大神指点!不知道有没有错
回复
共 0 条回复,欢迎继续交流。
正在加载回复...