该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
风向森林
题目背景
Y 同学进入了一片会改变方向的风向森林。
森林中的每个位置都有不同的风向效果。机器人每到一个位置,都会先受到当前位置的风向影响,然后再尝试向当前方向前进一步。
机器人可能会在森林中反复进入相同的状态。这里的状态不仅包括它所在的位置,还包括它当前的朝向。
现在请你判断:机器人在行动过程中,第一次出现重复状态是在第几次行动之后。
题目描述
给定一个 行 列的地图。
地图中每个位置可能是以下字符之一:
.:普通空地,不改变方向;L:左旋风,会让机器人向左转 ;R:右旋风,会让机器人向右转 ;B:反向风,会让机器人转向相反方向;x:障碍,机器人不能进入。
机器人有 种朝向,用整数 表示:
| 编号 | 方向 |
|---|---|
| 东 | |
| 东南 | |
| 南 | |
| 西南 | |
| 西 | |
| 西北 | |
| 北 | |
| 东北 |
机器人初始位于 ,初始朝向为 。保证初始位置不是障碍。
接下来机器人会执行 次行动。每次行动按照下面的规则进行:
- 机器人先根据当前格子的字符调整朝向:
- 若当前格子为
.,朝向不变; - 若当前格子为
L,朝向变为 ; - 若当前格子为
R,朝向变为 ; - 若当前格子为
B,朝向变为 。
- 若当前格子为
- 然后机器人尝试向当前朝向前进一步。
- 如果目标位置在地图内,并且不是障碍
x,机器人移动到目标位置。 - 否则机器人保持原地不动,并且朝向变为 。
如果某次行动结束后,机器人的完整状态 曾经出现过,则称这次行动后出现了重复状态。
请你输出第一次出现重复状态的行动编号。若在 次行动内都没有出现重复状态,则输出 -1。
注意:初始状态也算作已经出现过。
输入格式
第一行输入一个整数 ,表示测试数据组数。
对于每组数据:
第一行输入三个整数 ,表示地图的行数、列数和行动次数。
第二行输入三个整数 ,表示机器人的初始位置和初始朝向。
接下来 行,每行输入一个长度为 的字符串,表示地图。
输出格式
对于每组数据,输出一行一个整数。
若机器人第一次出现重复状态是在第 次行动后,输出 ;否则输出 -1。
样例输入
1
3 4 12
2 1 0
....
.Rx.
..L.
样例输出
9
样例解释
初始时,机器人位于 ,朝向为东,也就是状态 。
机器人前几次行动后的状态如下:
| 行动次数 | 位置 | 朝向 |
|---|---|---|
| 初始 | 东 | |
| 东南 | ||
| 东 | ||
| 东南 | ||
| 南 | ||
| 西南 | ||
| 西 | ||
第 次行动后的状态和第 次行动后的状态完全相同,都是 。
因此第一次出现重复状态的行动编号是 。
数据范围
对于 的数据,满足:
- ;
- ;
- ;
- ;
- ;
- ;
- 地图字符只包含
.、L、R、B、x; - 初始位置一定不是障碍。
| 测试点编号 | 分值 | 的范围 | 的范围 | 特殊性质 |
|---|---|---|---|---|
| 分 | 地图中只有 . 和 x |
|||
| 地图中没有障碍 | ||||
地图中没有 B |
||||
| 分 | 无特殊限制 |
京公网安备11010802045784号