AcWing 6039. 地图探险
原题链接
简单
作者:
满眼星辰2024
,
2024-11-06 23:29:54
,
所有人可见
,
阅读 3
#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
int t, n, m, k, x, y, d, ans;
pair<int, int> path[4] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; // 方向
string s;
int main(){
cin >> t;
while (t--){
cin >> n >> m >> k;
cin >> x >> y >> d;
char pam[N][N] = {};
bool vis[N][N] = {}; // 标记走过的位置
ans = 1; // 统计走过的位置
for (int i=1; i<=n; i++){
scanf("%s", pam[i]+1);
}
vis[x][y] = 1; // 标记初始位置 已经走过
while (k--){
int nowx = path[d].first + x;
int nowy = path[d].second + y;
if (nowx >= 1 && nowx <=n && nowy >= 1 && nowy<=m && pam[nowx][nowy] != 'x'){
if (! vis[nowx][nowy]){
ans ++; vis[nowx][nowy] = 1;
}
x = nowx; y = nowy;
} else {
d = (d+1) % 4;
}
}
printf("%d\n", ans);
}
}