问题 4814 --3.最大边长

4814: 3.最大边长

题目描述

  一个红十字标志是一个正方形$(2 \times k+1) \times (2 \times k+1) $,边长为 ,其中 $k$ 为非负整数。
它的四条边与门的边平行,而且恰由门上的 $(2 \times k+1) \times (2 \times k+1)$ 个小方格组成。
这里,红十字标志是以白色为底色,红色为十字的颜色。
假设用 $1$ 表示红色,用 $0$ 表示白色。
对应到计算机处理的数据中,就是除了正中列与正中行全为 $1$ 外,其余方格均为 $0$。

以下是几种不同大小的标志:
$1\times 1$:
$1$

$3\times 3$:
$0 \ 1 \ 0 \\
1 \ 1 \ 1 \\
0 \ 1 \ 0 \\$

$5\times 5$:
$0 \ 0 \ 1 \ 0 \ 0 \\
0 \ 0 \ 1 \ 0 \ 0 \\
1 \ 1 \ 1 \ 1 \ 1 \\
0 \ 0 \ 1 \ 0 \ 0 \\
0 \ 0 \ 1 \ 0 \ 0 \\
$

现在给你一个正方形,要求你请你找到其中一个最大的红十字标志,输出它的边长即可。

输入

本题输入量巨大,推荐使用以下输入方法:


scanf("%d\n", &n);
for (int i = 1; i <= n; i ++) scanf("%s", s[i] + 1);
for (int i = 1; i <= n; i ++)
    for (int j = 1; j <= n; j ++)
        a[i][j] = s[i][j] - '0';
其中 $n$  的正方形的边长, $s$ 是字符数组,$a[i][j]$ 是第 $i$  行第 $j$  列的数值。

输出

一行,表示最大红十字标志的边长。

样例输入输出

输入#1 复制
5
00011
01011
11100
01001
00010
输出#1 复制
3

提示

对于 $30\%$  的数据, $1\leq n \leq 100$ ;
对于 $50\%$  的数据, $1\leq n \leq 500$ ;
对于 $100\%$  的数据, $1\leq n \leq 2000$。

序号 标题 作者 发表时间 费用 订购数 操作