小 A 开发一款《冒险岛》游戏。
在这个游戏中,有 2 个角色,一个是游戏主人公 Freda,另一个是机器人 Cameron。
游戏在 10 \times 10 的平面网格地图中进行,其中有一些格子是墙壁,不能通过。Freda 和 Cameron 都不能进入标记为墙壁的格子。
地图中的格子有如下几种情况:
.
空地。*
墙壁。C
机器人 Cameron。F
主人公 Freda。这里有一个平面网格地图的例子:
*...*.....
......*...
...*...*..
.....F....
...*......
*.....*...
...*......
..C......*
...*.*....
.*.*......
游戏的目标是要让主人公 Freda 抓到机器人 Cameron 。
机器人在地图里以固定的方式移动。每分钟,他可以向前移动或是转弯。如果前方无障碍,且没有走出地图的边界,他会按照原来的方向前进一步。否则他会用这一分钟顺时针转 90 度。
主人公 Freda 也按照一样的规则,在地图中移动。每次(每分钟)Freda 和机器人的移动是同时进行的。这就意味着如果他们在移动的时候穿过对方,但是没有在同一格相遇,我们不认为 Freda 抓到了机器人。比如,在某时刻,Freda 在机器人的正左侧准备向右移动,机器人在 Freda 正右侧准备向左移动。且那么在下一分钟,Freda 和 机器人的位置会同时改变,他们正好穿过了对方。
当他们在某分钟末在某格子相遇,那么游戏结束。
读入 10 \times 10 的平面网格地图。地图数据中只有一个 F
和一个 C
。F
和 C
一开始不会处于同一个格子中。
请编程计算 Freda 需要多少分钟才能抓到机器人。初始状态下,机器人和 Freda 都准备向上移动。
如果 Freda 永远都抓不到机器人,请输出 0 。
读入 10 \times 10 的平面网格地图。
输出一整数,代表 Freda 抓到机器人需要多少分钟。如果永远抓不到,请输出 0。
*...*....* .......*.. .*...*.... .*.C...F.. ....*..**. *.......*. ......**.. *......... ..*...*..* *.....*.*.
20
*...*..... ......*... ...*...*.. .....F.... ...*...... *.....*... ...*...... ..C......* ...*.*.... .*.*......
61
.......... .********. .********C .********. .********. .********. .********. .********. .********. F.........
0
USACO 2.4