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