#X1012. 智能物流分拣系统
智能物流分拣系统
题目描述
年,某大型物流中心全面启用了“智能分拣机器人”系统。你被聘请为该系统的模拟测试工程师。
分拣中心可以看作一个 行 列的网格地图。 地图上的每个格点可能包含以下几种状态:
- 空地(用字符
.表示):机器人可以通行,也可以放置货物。 - 障碍物(用字符
#表示):机器人不可通行,不可放置货物。 - 货物(用大写字母
A-Z表示):表示该位置当前堆放了某种类型的货物。
系统中有 个机器人,编号为 到 。 每个机器人都有以下属性:
- 位置:当前所在的行号 和列号 ()。
- 朝向:当前面向的方向,用整数 表示(:北, :东, :南, :西)。
- 手持状态:机器人手里是否拿着货物(最多只能拿 个)。
接下来系统会按顺序发出 条指令。你需要模拟这些指令的执行过程。 每条指令指定一个机器人 和一个操作类型。指令是严格按顺序串行执行的(即上一条指令执行完毕或失败后,才执行下一条)。
操作类型详解
F(Forward) - 前进- 机器人尝试向当前朝向移动一格。
- 失败条件:如果前方是地图边界、障碍物(
#),或者目标格子上有其他机器人,则操作失败,机器人保持原地不动。
L(Left) - 左转- 机器人原地向左旋转 度。
- 方向变化规律:北()西()南()东()北()。
R(Right) - 右转- 机器人原地向右旋转 度。
- 方向变化规律:北()东()南()西()北()。
P(Pick) - 拾取- 机器人尝试捡起脚下格子(当前坐标)的货物。
- 失败条件:
- 机器人手里已经有货物。
- 脚下格子没有货物(是
.)。
- 成功效果:脚下格子变为空地
.,机器人手中获得该字符代表的货物。
D(Drop) - 放置- 机器人尝试将手中的货物放到脚下格子。
- 失败条件:
- 机器人手里没有货物。
- 脚下格子已经有货物(是
A-Z)。
- 成功效果:机器人手中货物消失,脚下格子变为对应的货物字符。
注意: 任何“操作失败”仅代表该指令被忽略,机器人状态不发生改变,计入“未成功执行”,程序继续处理下一条指令。
输入格式
输入通过标准输入给出:
第一行包含三个整数 ,分别表示地图行数、列数和机器人数量。
接下来 行,每行 个字符,表示初始地图(只包含 .、# 和 A-Z)。
接下来 行,描述 个机器人的初始状态。第 行包含三个整数 ,表示第 个机器人的初始行号、列号和朝向。
- 输入保证初始时机器人都在合法坐标,且位置互不重叠,也不会位于障碍物上。
- 初始时所有机器人手中均无货物。
接下来一行包含一个整数 ,表示指令数量。 接下来 行,每行包含一个整数 和一个字符 ,表示对编号为 的机器人执行 操作。
输出格式
第一行输出一个整数,表示成功执行的指令总数。 接下来 行,每行 个字符,表示模拟结束后最终的地图状态。
数据范围
- 地图字符仅包含
.,#,A-Z。
输入样例:
4 4 1
.A..
....
....
....
1 1 1
9
1 F
1 P
1 R
1 F
1 F
1 R
1 F
1 D
1 F
输出样例:
8
....
....
A...
....
解释:
1 F: R1 (1,1)->(1,2) [东]。成功。1 P: 在 (1,2) 捡起A。成功。1 R: R1 转向南。成功。1 F: R1 (1,2)->(2,2) [南]。成功。1 F: R1 (2,2)->(3,2) [南]。成功。1 R: R1 转向西。成功。1 F: R1 (3,2)->(3,1) [西]。成功。1 D: 在 (3,1) 放下A。成功。1 F: R1 (3,1)->(3,0) [西]。越界,失败。
相关
在下列比赛中: