T2 地图探险(explore)

答案解析
需要的变量 / 数组
描述机器人状态需要的3个变量:
x:位置。
y:位置。
d:朝向(0~3)。
vis数组:
当机器人走过[x, y],vis[x][y] = true。
dir数组:
dir[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}。
[x + dir[d][0], y + dir[d][1]]表示当机器人朝向为d时往前走一步之后的位置。
d = 0: 右 (0, 1)。
d = 1: 下 (1, 0)。
d = 2: 左 (0, -1)。
d = 3: 上 (-1, 0)。
核心思想
vis[x][y] = true;
while (k--) {
int nx = x + dir[d][0], ny = y + dir[d][1]; // 计算下一步的位置
if (!(nx >= 1 && nx <= n && ny >= 1 && ny <= m && mp[nx][ny] == '.')) { // 是否能走
d = (d + 1) % 4; // 若不能走 右转
continue;
}
x = nx, y = ny; // 若能走 更新
vis[nx][ny] = true;
}试卷来源:2024 CSP-J入门级(第二轮)C++真题