2014
02-24

# Robot Encryption

Due to suspicion of cheaters, one of the more paranoid problem setters has started encrypting all messages to the rest of the jury before sending them. He didn’t use any standard encryption, however, as he believes those are all part of a giant conspiracy network trying to crush IDI Open from the inside.

Instead, he based it on the fact that the cheaters are likely to be the worst programmers. The decryption requires some programming skill, and should
therefore be safe.

Along with the encrypted message, he sent explanation of how to decrypt it. The only problem now is that not all jury members are able to implement the decryption. This is where we need your help.

You need to help us decrypt these messages by writing a program that does the task. Decryption is performed by simulating a robots movement on a grid. The robot is initially placed in the north-west corner of the grid, facing south. The robot is a simple one, and only accepts three dierent commands:

L turns the robot 90 angle to the left.

R turns the robot 90 angle to the right.

F moves the robot one square forward. If moving forward would cause the robot to fall of the grid, the robot instead makes a 180 angle turn without moving.

Instructions to the robot is given in a series of commandsets. A commandset is a string of commands, with the possible addition of loops. A loop is given on the form "(commandset)number" where number is the number of times the commandset inside the parentheses should be run. Longer sequences of commands can be built up recursively in this fashion. More formally:

commandset ::= instruction+

instruction ::= command | loop

loop ::= "(" commandset ")" number

command ::= R | L | F

number ::= 1 |2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

The decrypted text is the text string obtained by concatenating the characters on the grid positions the robot stands on after executing each commandline.

The first line of input gives T, the number of test scenarios. Each scenario starts with a line containing W and H, separated by a single space, describing the dimensions of the grid. Then follows H lines, each consisting of W characters, making up the grid. After this comes a line containing N, the number of commandlines, followed by the N lines the robot will be executing.

The first line of input gives T, the number of test scenarios. Each scenario starts with a line containing W and H, separated by a single space, describing the dimensions of the grid. Then follows H lines, each consisting of W characters, making up the grid. After this comes a line containing N, the number of commandlines, followed by the N lines the robot will be executing.

1
6 7
012345
6789AB
CDEFGH
IJKLMN
OPQRST
UVWXYZ
_! .,&
12
FFL(F)5
(F)4
(LF)2
(L(R)6L)9
RFRFFF
(L(F)2)2
LF
FLFF
FFFF
LF
FLFF
L(F)4

HELLO WORLD!

1. 话说我从大学开始看煎蛋，到如今工作五年，一直潜水，最早知道换dc是从cnbeta上了解的，那时魅族刚出了个手机，能开后盖但是不能换dc，cb的评论区小米魅族粉丝经常因此互喷，然后就在cb的评论区有了这么个名字好像叫换dc人物，经常发表一些没有太多价值，稍

2. 有一点问题。。后面动态规划的程序中
int dp[n+1][W+1];
会报错 提示表达式必须含有常量值。该怎么修改呢。。

3. 算法是程序的灵魂，算法分简单和复杂，如果不搞大数据类，程序员了解一下简单点的算法也是可以的，但是会算法的一定要会编程才行，程序员不一定要会算法，利于自己项目需要的可以简单了解。