10分求助!
  • 板块P1238 走迷宫
  • 楼主卷王慢即快
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/11/3 20:19
  • 上次更新2023/10/27 04:23:38
查看原帖
10分求助!
494699
卷王慢即快楼主2022/11/3 20:19
#include<bits/stdc++.h>
using namespace std;
int m, n;
int sx, sy, fx, fy;
int a[20][20];
int visx[50], visy[50];
bool flag = 0;
inline void kkksc03(int deep, int x, int y)
{
	if(x <= 0 || x > m || y <= 0 || y > n) return;
	if(x == fx && y == fy)
	{
		flag = 1;
		for(int i = 1; i < deep; i++)
			printf("(%d,%d)->", visx[i], visy[i]);
		printf("(%d,%d)\n", fx, fy);
		return;
	}
	if(a[x][y] == 1)
	{
		visx[deep] = x, visy[deep] = y;
		a[x][y] = 0;
		kkksc03(deep + 1, x, y - 1);
		kkksc03(deep + 1, x - 1, y);
		kkksc03(deep + 1, x, y + 1);
		kkksc03(deep + 1, x + 1, y);
		a[x][y] = 1;
	}
}
int main()
{
	cin >> m >> n;
	for(int i = 1; i <= m; i++)	
		for(int j = 1; j <= n; j++)
			cin >> a[i][j];
	cin >> sx >> sy >> fx >> fy;
	kkksc03(0, sx, sy);
	if(flag == 0) cout << -1;
	return 0;
}

只有答案是 1-1 的是对的,可能是 dfsdfs 哪里错了(?)

2022/11/3 20:19
加载中...