问题2148--小地图

2148: 小地图

时间限制: 1 Sec  内存限制: 256 MB
提交: 68  解决: 32
[状态] [讨论版] [提交] [命题人:]
题目描述
给定一个n行m列的网格地图,从上到下依次编号为第1行到第n行,从左往右依次编号为第1列到第m列。每个格子要么可以通行(用.表示),要么不可通行(用#表示)。

玩家P现在位于某个可以通行的格子上,小地图显示出了玩家所在位置周围3 * 3 = 9个格子。请写一个程序,根据地图和小地图找到玩家可能所在的位置。
输入
第一行包含一个正整数T(1 <= T <= 10),表示测试数据的组数。

每组测试数据第一行包含两个正整数n,m(1 <= n,m <= 100),表示行数和列数。

接下来n行,每行包含一个长度为m的字符串,依次描述每一行每个格子的情况。字符串仅由.和#构成。

接下来3行,每行包含一个长度为3的字符串,描述玩家所在位置周围的情况。字符串由.、#、P(表示玩家所在位置)和*(表示超出地图的部分)构成。输入数据保证有且仅有一个P,且P一定位于小地图的第2行第2列。

请注意:你不能旋转/翻转小地图。
输出
对于每组数据,输出一行一个整数,即玩家可能所在的位置的数量。
样例输入 Copy
2
5 8
#.#....#
#.#..#..
.#..#.#.
#..###..
...#....
.#.
#P.
...
1 2
.#
***
*P#
***
样例输出 Copy
2
1
来源/分类