#12050. Robot Instructions / 机器人的指令
Robot Instructions / 机器人的指令
Problem J46: Robot Instructions / 机器人的指令
版权信息: JLOJ2361 · 指令解析与模拟执行问题
任务总览
任务名称 | 时间限制 | 内存限制 | 分数 |
---|---|---|---|
机器人的指令 | 1 sec | 1024 MB | 10 points |
题目描述
在数轴原点上有一个机器人,它将依次执行一系列指令。你的任务是预测:** 在执行完全部指令后,机器人所在的位置** 。
机器人支持以下三类指令:
LEFT
:向左移动一个单位;RIGHT
:向右移动一个单位;SAME AS i
:重复执行第 条指令的动作( 为之前执行过的某一条指令编号)。
执行完每组指令后,机器人应复位回数轴原点,再开始处理下一组数据。
输入格式
*第一行:整数 (),表示数据组数;
- 每组数据:
- 第一行:整数 (),表示指令条数;
- 接下来 行:每行一个指令(格式为
LEFT
、RIGHT
或SAME AS i
)。
输出格式
对于每组数据,输出一行整数,表示机器人执行完该组所有指令后的最终位置。
输入输出样例
输入示例
2
3
LEFT
RIGHT
SAME AS 2
5
LEFT
SAME AS 1
SAME AS 2
SAME AS 1
SAME AS 4
输出示例
1
- 5
题目分析与解法
✅ 模拟思路:
- 使用数组
op[i]
记录第 条指令的实际动作( - 1 表示左移, + 1 表示右移); - 遇到
SAME AS x
时,将当前指令的实际动作设为op[x]
; - 依次累加所有指令的动作值,得到机器人当前位置。
🚶♂️ 示例说明:
- 第一组指令:
- 指令1:LEFT → 位置 - 1;
- 指令2:RIGHT → 位置 0;
- 指令3:SAME AS 2 → 再次 RIGHT → 最终位置为 1;
- 第二组指令:
- 多次引用
SAME AS i
; - 实际动作为 5 次 LEFT,总位移为 - 5。
边界细节说明
*指令中引用的编号 i
总是合法,即 ;
- 每组测试之间机器人自动复位为
0
; - 最大支持 组、每组 条指令,适合直接模拟。
时间复杂度分析
操作 | 复杂度 |
---|---|
每组指令解析 | |
总体模拟 | ,最多 |