题号:NC14381
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 64 M,其他语言128 M
64bit IO Format: %lld
题目描述
给定一个 n*m 的矩阵,矩阵元素由X和O构成,请求出其中最大的蝴蝶形状。
蝴蝶形状的定义如下:
存在一个中心点(必须为X),并且其往左上(必须为X)、左下(必须为X)、右上(必须为O)、右下(必须为O)四个方向扩展相同的长度,且左上顶点与左下顶点之间全由X填充,右上顶点与右下顶点之间全由O填充。
我们不在意在蝴蝶形状内部是X还是O。
例如:
XAAAO
XXAOO
XAXAO
XXAOO
XAAAO
是一个蝴蝶形状(其中A表示X或O)。
X
也是。
而
XAAO
XXOO
XXOO
XAAO
不是(不存在中心点)。
输入描述:
第一行两个整数n, m表示矩阵的大小 (1 <= n, m <= 500);
接下来 n 行,每行一个长度为 m 的字符串表示矩阵,矩阵元素保证由X和O构成。
输出描述:
一行一个整数表示最大的蝴蝶形状的对角线的长度。
示例1
输入
复制
5 5
XOOOO
XXOOO
XOXOO
XXOOO
XOOOO