题库首页 › 信息学奥赛 › 题目 14783

T2 地图探险(explore)

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++真题

本卷相关题目

在线做题 同科目题库