#M0004. 扫地机器人
扫地机器人
题目描述
本题使用文件输入输出:输入文件名为 robot.in,输出文件名为 robot.out。
一个房间是 行 列的网格,行从上到下编号 ,列从左到右编号 。每个格子要么是空地 .,要么是障碍 #。
一台扫地机器人开始时停在第 行第 列的空地上,面朝四个方向(上、下、左、右)之一。机器人工作 个单位时间,每个单位时间它做且只做下面一件事:
- 看一眼正前方的那个格子。如果它在房间内且是空地,机器人就前进一格到那里;
- 否则(正前方出了房间,或者是障碍),机器人原地向右转 (上 → 右 → 下 → 左 → 上),这个单位时间内不移动。
机器人到过的每个格子(包括出发的格子)都会被打扫干净。请你求出 个单位时间结束后,一共有多少个不同的格子被打扫过。
输入格式
输入文件名为 robot.in。
第一行三个整数 ,表示房间的行数、列数和工作的单位时间数。
第二行两个整数和一个大写字母 ,表示机器人的起始行、起始列和起始朝向。 是 U、D、L、R 之一,分别表示朝上(行号减小的方向)、朝下、朝左(列号减小的方向)、朝右。
接下来 行,每行一个长度为 的字符串,只含 . 和 #,描述房间。保证第 行第 列是空地。
输出格式
输出文件名为 robot.out。
一行一个整数,表示被打扫过的不同格子的数量。
样例 #1
样例输入 #1
3 4 12
1 1 R
..#.
....
....
样例输出 #1
6
样例解释
机器人从 朝右出发, 个单位时间依次是:
| 时间 | 正前方 | 动作 | 结束时位置 / 朝向 |
|---|---|---|---|
| 1 | 空地 | 前进 | 朝右 |
| 2 | 障碍 | 右转 | 朝下 |
| 3 | 空地 | 前进 | 朝下 |
| 4 | 空地 | 朝下 | |
| 5 | 出界 | 右转 | 朝左 |
| 6 | 空地 | 前进 | 朝左 |
| 7 | 出界 | 右转 | 朝上 |
| 8 | 空地 | 前进 | 朝上 |
| 9 | 空地 | 朝上 | |
| 10 | 出界 | 右转 | 朝右 |
| 11 | 空地 | 前进 | 朝右 |
| 12 | 障碍 | 右转 | 朝下 |
到过的格子有 共 个。第 、 个单位时间回到了已经打扫过的格子,不重复计数。
样例 #2
样例输入 #2
2 2 5
1 1 U
.#
#.
样例输出 #2
1
样例解释
机器人四面都走不通, 个单位时间全在原地转圈,只有出发的格子被打扫过。
样例 #3
样例输入 #3
见附件中的 robot/robot3.in。
样例输出 #3
见附件中的 robot/robot3.ans。
提示
数据范围
- 对于 的数据:,;
- 对于 的数据:,;
- 对于 的数据:,,,。
附件
相关
在下列比赛中: