我的代码有没有错
  • 板块灌水区
  • 楼主CodingTim
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/24 21:15
  • 上次更新2024/10/24 22:07:17
查看原帖
我的代码有没有错
1473968
CodingTim楼主2024/10/24 21:15

这个是BFS的迷宫问题代码,这么多变量好像cnt变量没有用上

直接上代码

#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;
}

直接上代码

跪求大神指点!不知道有没有错

2024/10/24 21:15
加载中...