CSP-J 2024 T2 地图探险
题目大意
有一片丛林,其环境可以用一个二维数组表示:
.代表此地为空地,可走。x代表此地非空地,不可走。
有一个机器人探路,他的状态分为两个值:
- 位置。
- 方向。
机器人探路有这样一些规则:
- 若前方有路,直接往前走(不管是否走过)。
- 遇到障碍物,右转。
现在给出机器人的初始状态(一定在空地),求执行k次操作之后,机器人经过了多少地方(右转算一次操作,前进算一次操作)。
思路
需要的变量 / 数组
描述机器人状态需要的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

最低0.47元/天 解锁文章
1301

被折叠的 条评论
为什么被折叠?



