#P2221. Frogger's For Dinner
Frogger's For Dinner
题目描述
"雅克叔叔,"你问道,"晚饭吃什么?"
"10分钟后再问我,"雅克叔叔回答,眼睛盯着坐在10号州际公路边上、你们破旧小屋前的一只疲惫的青蛙。
你注意到这只可能成为轮下亡魂的青蛙正开始穿越车流密集的公路。你想知道是否应该烧一锅水准备晚餐的青蛙腿,还是热一下剩下的负鼠肉。你启动了沼泽电脑XL2,快速编写一个程序来判断青蛙是否能安全穿过马路,或是会被车辆撞到。
观察小屋前的这段公路,你注意到车道和路肩可以看作一个的网格(如下所示)。你还发现青蛙和车辆的运动可以用"回合"来描述。为了判断青蛙能否成功过马路,你迅速制定了一套规则:
- 每次模拟开始时,青蛙可以从第行(起始路肩)的任意格子出发。
- 每次模拟开始时,每辆车会占据行(车道)中任意列的一个格子。
- 每个回合包含两个步骤:
- 青蛙总是保持在同一列,向下移动一行,朝第9行(目的地)前进(它毕竟不是世界上最聪明的青蛙)。
- 然后所有车辆同时移动,根据所在行(车道)向左或向右移动个格子,是它们的速度(输入中给出)。为了模拟更多接近的车辆,如果车辆移出网格,它会从另一侧"环绕"出现。例如:如果一个车辆移动到-1列,它会出现在第9列(-2列对应第8列,以此类推);如果移动到第10列,它会出现在第0列(第11列对应第1列,以此类推)。
列
0123456789
----------
R 0| |← 青蛙可以从第0行的任意格子出发
o 1| |(路肩)
w 2| /___ |
3| \ |1-4行的车辆向左移动(朝向第0列)
4| |
5| |
6| ___\ |5-8行的车辆向右移动(朝向第9列)
7| / |
8| |
9| |← 青蛙的目的地行(路肩)
----------
- 如果青蛙能通过一系列回合到达第9行(不被撞到),且从第0行的任意列出发,则视为成功穿越公路(它毕竟也不是世界上最笨的青蛙)。
- 如果青蛙在任何时刻与车辆占据同一格子,则被撞死。包括:
- 青蛙移动到一个被车辆占据的格子
- 车辆移动时"碾过"青蛙所在的格子
输入格式
输入包含最多100组数据,每组数据描述公路的初始状态,格式如下(数据组间无空行):
- 起始行 - 单行"START"
- 接下来8行表示第1-8行(公路的"车道"),从第1行开始。每行包含10个用空格分隔的整数,每个整数表示该行对应列的状态:
- 0表示没有车辆
- 非零整数表示有车辆,N是其速度。注意:给定的速度不会导致车辆相撞或进入已被其他车辆占据的格子(不会发生事故),因为所有车辆同时移动,且同一行的车辆保证以相同速度移动。
- 结束行 - 单行"END"
输出格式
每组数据输出一行,要么是"LEFTOVER POSSUM",要么是"FROGGER"(全大写,无前后空格)。
- "LEFTOVER POSSUM":如果青蛙能从第0行的任意列出发安全到达第9行。
- "FROGGER":如果无法满足上述条件。
输入样例1
START
3 0 0 0 0 3 0 0 0 3
1 0 0 0 1 0 0 0 0 0
4 0 0 0 0 0 0 4 0 0
0 0 2 0 0 0 0 0 0 2
5 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 2 0 2
0 0 0 4 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0
END
START
9 9 9 9 9 9 9 9 9 9
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
END
START
1 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
END
输出样例1
FROGGER
FROGGER
LEFTOVER POSSUM
来源
South Central USA 2001