本地测试错误数据正确,求调试
  • 板块P1189 SEARCH
  • 楼主ChampionCyan
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/3/20 17:24
  • 上次更新2024/3/20 19:45:11
查看原帖
本地测试错误数据正确,求调试
1036180
ChampionCyan楼主2024/3/20 17:24

题目戳我

#include <stdio.h>
int n, m, k, kx, ky, cnt = 0;
bool map[52][52], vis[51][51];
char ans[51][51], dir[1001];

void dfs(int x, int y, int t) {
	if (t > cnt)
		ans[x][y] = '*';
	if (vis[x][y] || t > cnt)
		return;
	vis[x][y] = true;
	if (dir[t] == 'N')
		for (int i = x - 1; map[i][y]; i--)
			dfs(i, y, t + 1);
	else if (dir[t] == 'S')
		for (int i = x + 1; map[i][y]; i++)
			dfs(i, y, t + 1);
	else if (dir[t] == 'W')
		for (int j = y - 1; map[x][j]; j--)
			dfs(x, j, t + 1);
	else
		for (int j = y + 1; map[x][j]; j++)
			dfs(x, j, t + 1);
}
			
int main() {
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= m; j++) {
			char ch = getchar();
			if (ch == '\n')
				ch = getchar();
			if (ch == '.')
				map[i][j] = true, ans[i][j] = '.';
			else if (ch == '*')
				map[i][j] = true, ans[i][j] = '.', kx = i, ky = j;
			else
				ans[i][j] = 'X';
		}
	scanf("%d", &k);
	while (k--) {
		char ch = getchar();
		while (ch == '\n')
			ch = getchar();
		dir[++cnt] = ch;
		while (ch != '\n' && ch != EOF)
			ch = getchar();
	}
	dfs(kx, ky, 1);
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++)
			putchar(ans[i][j]);
		putchar('\n');
	}
	return 0;
}

怀疑是输入有问题(即下面这段):

while (k--) {
	char ch = getchar();
	while (ch == '\n')
		ch = getchar();
	dir[++cnt] = ch;
	while (ch != '\n' && ch != EOF)
		ch = getchar();
}
2024/3/20 17:24
加载中...