dfs求调
查看原帖
dfs求调
1041365
Sirius6699楼主2024/4/27 10:26

为什么没有输出啊啊啊

#include <iostream>

using namespace std;

int n, m;
int sx, sy, ex, ey, step;
int a[15 + 5][15 + 5], mp[15 + 5][15 + 5] = {0};
int x_[5] = {0, -1, 0, 1};
int y_[5] = {-1, 0, 1, 0};
int ans[5000][3];

void dfs(int x1, int x2, int y1, int y2, int m, int n)
{
	if(x1 == x2 && y1 == y2) //到终点了
	{
		for(int i = 0; i < step; i++)
		{
			cout << "(" << ans[i][0] << "," << ans[i][1] << ")" << "->";
		}
		cout << "(" << x2 << "," << y2 << ")" << endl;
		return ;
	}

	for(int i = 0; i < 4; i++)
	{
		int dx = x1 + x_[i];
		int dy = y1 + y_[i];
		if(mp[dx][dy] != 1 /*没有障碍*/ && dx != x1 && dy != y1 /*不在起点*/ && dx <= m && dy <= n /*没有越界*/ && a[dx][dy] != 1 /*没有经过*/)
		{
			a[dx][dy] = 1; //标记为经过
//			cout << "(" << dx << "," << dy << ")" << "->";
			ans[step][0] = dx;
			ans[step][1] = dy;
			dfs(dx, dy, x2, y2, m, n); //继续搜索
			a[dx][dy] = 0;
		}
	}
}

signed main()
{

	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);// 关闭同步流

	cin >> m >> n;
	for(int i = 1; i <= m; i++)
	{
		for(int j = 1; j <= n; j++)
		{
			cin >> a[i][j];
		}
	}
	cin >> sx >> sy;
	cin >> ex >> ey;

	for(int i = 1; i <= m; i++)
	{
		for(int j = 1; j <= n; j++)
		{
			if(a[i][j] == 0)
			{
				mp[i][j] = 1;
			}
		}
	}

	dfs(sx, ex, sy, ey, m, n);

	return 0;
}
2024/4/27 10:26
加载中...