社区讨论

我的代码有没有错

灌水区参与者 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 条回复,欢迎继续交流。

正在加载回复...