滑冰
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
滑冰(skate)
【题目描述】
有一个 行 列的网格。用 表示从上往下第 行、从左往右第 列的格子。
字符 . 表示普通冰面,字符 # 表示岩石。字符 L、R、U、D 表示特殊冰面,分别对应左、右、上、下四个方向。网格最外围的所有格子一定都是岩石。开始时,玩家位于普通冰面 。
每次操作,玩家先选择上、下、左、右中的一个方向,然后沿该方向不断滑行:
- 如果前方是冰面,就滑到前方格子并继续滑行;
- 如果前方是岩石,就停在当前格子,本次操作结束。
当玩家经过 L、R、U、D 格子时,可以选择保持原来的滑行方向,也可以立即改为该字符所表示的方向,然后继续滑行。例如,玩家向右经过 D 时,可以继续向右,也可以改为向下。每次经过特殊冰面时都可以重新作出选择。
玩家可以进行任意多次操作。一个冰面格子只要曾经被玩家经过或停留,就称为可到达。请求出可到达的冰面格子数量。
【输入格式】
输入的第一行包含两个正整数 ,表示网格的行数和列数。
接下来 行,每行包含一个长度为 、只由 .、#、L、R、U、D 六种字符组成的字符串,表示网格。输入中各字符之间没有空格。
【输出格式】
输出一行一个整数,表示可到达的冰面格子数量。
【样例1输入】
5 5
#####
#...#
#.#.#
#...#
#####
【样例1输出】
8
【样例1解释】
玩家可以到达中间岩石周围的全部 个冰面格子。
【样例2输入】
6 7
#######
#.....#
#.#.#.#
#.....#
###.###
#######
【样例2输出】
12
【样例3输入】
6 7
#######
#..D..#
###.###
#.....#
#######
#######
【样例3输出】
11
【样例3解释】
玩家向右经过 D 时可以改为向下,从而进入下方区域。如果忽略 D 的转向作用,则无法到达这些格子。
【数据范围】
对于 的数据,。
对于 的数据,。
对于 的数据,网格中不包含 L、R、U、D。
对于 的数据,, 一定是普通冰面,且网格最外围的格子一定都是岩石。