船只识别
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
在一个 的网格中,每个格子可能是水域(用 . 表示),也可能是船只的一部分(用 # 表示)。每艘船都是一个由若干个相邻 # 组成的矩形区域,且不同船只之间不能接触(即两艘船之间不能在上下或左右方向直接相邻)。
请判断当前网格中的船只放置是否合法,并统计船只的数量。如果放置合法,输出船只数量;如果有任意两艘船相邻,输出 Bad placement.。
输入格式
第一行包含两个整数 和 (),表示网格的行数和列数。
接下来的 行每行 个字符,仅包含 # 或 .,表示整张网格的内容。
输出格式
一行一个字符串,如果船的位置放得正确(即棋盘上只存在相互之间不能接触的矩形,如果两个 # 号上下相邻或左右相邻却分属两艘不同的船只,则称这两艘船相互接触了)。就输出 There are S ships.,S 表示船只的数量。否则输出 Bad placement.。
样例输入1
6 8
.....#.#
##.....#
##.....#
.......#
#......#
#..#...#
样例输出1
There are 5 ships.
样例输入2
6 8
##...#.#
###....#
##.....#
.......#
#......#
#..#...#
样例输出2
Bad placement.