1037: 排兵布阵(加强版)
Description
佳佳又在玩一个有趣的单机塔防游戏。
已知一个N*N的地图上,有一些地方是空地,以‘.’表示;还有一些地方是墙,以‘X’表示。现在佳佳想要在这个地图上放置一些低射炮台。炮台的射程是一个十字,如下所示:
OOPOO
OOPOO
P PPP P
OOPOO
OOPOO
炮台的放置必须满足下列两个要求:
1.炮台必须架设在空地上,不可以放置在墙‘X’上。
2.炮台与炮台之间不可以相互攻击,也就是说任意一个炮台不可以在其它炮台的射程范围之内。
炮台的射程会被墙挡住,比如在下列地图中,两个炮台不会相互攻击:
OOOOO
OPXPO
OOOOO
OOOOO
OOOOO
现在佳佳想要知道,他最多能够在这张地图上放置多少个炮台呢?
Input
输入文件名为 soldier.in。
输入第一行有一个整数N,表示地图的长度和宽度为N*N。
接下来是一个N*N的矩阵aij
描述这张地图,地图仅包含’X’和’.’。
Output
输出文件名为 soldier.out。
输出共 1行,表示佳佳最多在地图上放置多少炮台。
Sample Input Copy
4
.X..
....
XX..
....
Sample Output Copy
5
HINT
【输入输出样例2】
soldier.in
|
soldier.out
|
4
....
....
....
....
|
4
|
【样例解释】
第一个样例的一种合法摆放方式:
【数据范围】
对于100%的数据1≤N ≤8