QOJ.ac

QOJ

Limite de temps : 2.0 s Limite de mémoire : 256 MB Points totaux : 100 Hackable ✓

#8887. 机器人博弈

Statistiques

在 Rat-O-Matic 机器人取得巨大成功后(如果你喜欢长篇故事,请参阅题目“I”),你被提升为 Rapid City Dynamics 公司乌拉尔分公司的首席执行官。受当地传统的启发,你决定制造一种非常特殊的机器人,名为 Robotobor!

Robotobor 可以在一个由 $n \times m$ 个单元格组成的矩形网格上移动。有些单元格是障碍物,机器人无法进入。每一秒,机器人都会移动到与当前单元格共享一条边的相邻单元格。

机器人的移动由程序控制。程序由零行或多行组成。每一行都是一个非空的字符字符串。每个字符都是以下之一:“U”(上)、“D”(下)、“L”(左)或“R”(右)。每个字符表示机器人必须向相应方向移动到相邻单元格。程序按行执行,每一行从左到右执行。

当且仅当满足以下条件时,该程序被认为是有效的: 在程序执行过程中,机器人不会进入障碍单元格,也不会离开网格范围。 每一行的长度最多为 100 个字符。 * 每一行都是一个回文串,即从右向左读与从左向右读相同(乌拉尔传统,就是这么狂野)。

你想要找到一个有效的程序,使机器人从单元格 $S$ 移动到单元格 $F$,且该程序包含的行数尽可能少。注意,不需要最小化程序的总长度。你能再次取得成功吗?

输入格式

第一行包含整数 $n$ 和 $m$,表示网格的行数和列数($1 \le n, m \le 50$)。

接下来的 $n$ 行描述了网格。每一行包含 $m$ 个字符。每个符号要么是“.”(空单元格),要么是“#”(障碍单元格),要么是“S”(起始单元格),要么是“F”(目标单元格)。你可以假设起始单元格和目标单元格不是障碍物。保证网格中恰好包含一个“S”和一个“F”。

输出格式

如果没有满足所有条件的程序,则输出仅包含数字 $-1$。

否则,输出你找到的程序。第一行必须包含行数 $k$,该值必须尽可能小。接下来的 $k$ 行必须包含程序本身。如果有多种可能的答案,输出其中任意一个即可。

样例

样例输入 1

3 5
S....
.#...
..#F.

样例输出 1

2
RR
DRD

样例输入 2

2 2
F#
#S

样例输出 2

-1

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.