求助,单组数据改多组数据时出错
查看原帖
求助,单组数据改多组数据时出错
144740
逆流之时楼主2020/5/1 20:18

我在 UOJ 上 AC 了此题,源代码:http://uoj.ac/submission/394724

这题在 UOJ 上是单组数据,但是我把单组数据改成多组数据时,交到 UVA 上却出错了。代码在这里:http://uoj.ac/submission/394725

其中主要需要修改的是读入部分:

bool read() {
	scanf("%d%d%d", &n, &m, &k);
	if (n == 0) return false;
	memset(a, 0, sizeof(a));
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++) {
			char c;
			std::cin >> c;
			if (c == 'S') start = point(i, j);
			if (c == '*') a[i][j] = Wall;
			else a[i][j] = Unknown;
		}
	return true;
}

这样的写法会导致 TLE,而把前面一段换成 if (scanf("%d%d%d", &n, &m, &k) != 3 || n == 0) return false; 时会导致 WA。

UOJ 上有刘汝佳的经过修改后可以在 UOJ 上通过的标程:http://uoj.ac/submission/105789。我也把这份代码中的读入中的 main() 函数改成这样,再把注释掉的 memset() 语句去掉注释交过,但是也 WA 了。请问我还可能有什么没有注意到的地方?

我是这样修改 main() 函数的:

  while (Readin()) {
    Initialize();
    Judge();
    Match();
  }

2020/5/1 20:18
加载中...