#include<bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<vector<char>> city(n, vector<char>(m));
int startX, startY;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> city[i][j];
if (city[i][j] == '*') {
startX = i;
startY = j;
}
}
}
int q;
cin >> q;
vector<string> signals(q);
for (int i = 0; i < q; i++) {
cin >> signals[i];
}
vector<vector<int>> dirs = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
vector<vector<bool>> possible(n, vector<bool>(m, true));
possible[startX][startY] = false;
for (int i = 0; i < q; i++) {
int dir;
if (signals[i] == "EAST") {
dir = 0;
} else if (signals[i] == "SOUTH") {
dir = 1;
} else if (signals[i] == "WEST") {
dir = 2;
} else if (signals[i] == "NORTH") {
dir = 3;
}
startX += dirs[dir][0];
startY += dirs[dir][1];
if (startX >= 0 && startX < n && startY >= 0 && startY < m) {
possible[startX][startY] = false;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (city[i][j] == 'X') {
cout << 'X';
} else if (possible[i][j]) {
cout << '*';
} else {
cout << '.';
}
}
cout << endl;
}
return 0;
}
2 个赞
题目id告诉我一下呗
1 个赞
note.ms/pjbw
在这个前面加*****://
1 个赞
求题目 id
1 个赞
5. 走丢的小信
XJOI - 题目ID:9722必做题100分
最新提交:
Accepted
100 分
历史最高:
Accepted
100 分
时间限制: 1000ms
空间限制: 262144kB
题目描述
时间:1s 空间:256M
题目描述:
小信出门帮妈妈买菜,不小心迷路了。小信身上带着定位装置,但是装置只显示小信行动的方向,每当小信朝着与原先方向不同的方向走了一步时,定位装置会发出信号。也就是说小信至少会朝着定位装置发出信号的方向走一步。
现在妈妈收到了装置发出的
�
q 个信号,信号是东(EAST),南(SOUTH),西(WEST),北(NORTH)中的一种,妈妈想知道小信可能在哪些位置。
输入格式:
第一行包含两个整数
�
n ,
�
m,表示城市的地图大小。
接下来
�
n 行
�
m 列的地图,'.' 表示空地,'X'表示建筑物,'*'表示小信出发的位置,保证输入只有一个'*'。
接下来一行包含一个整数
�
q,表示妈妈收到的信号个数。
接下来
�
q 行,每行一个字符串,是东南西北中的一种。保证任意两个连续的信号不会相同。
输出格式:
输出初始地图,字符 '*' 仅用来表示小信最终可能出现的位置。
样例1输入:
4 5
.....
.X...
...*X
X.X..
3
NORTH
WEST
SOUTH
样例1输出:
.....
*X*..
*.*.X
X.X..
约定与提示:
对于100%的数据,
1
≤
�
,
�
≤
50
1≤n,m≤50,
1
≤
�
≤
1000
1≤q≤1000
数据保证合法,也就是说不会出现像下面这种:小信完全不能动,但是还有信号发出的情况。
错误的数据:
3 3
.X.
X*X
.X.
1
NORTH
1 个赞