Responsive image

问题 I: 口

问题 I: 口

时间限制: 1 Sec  内存限制: 128 MB
提交: 0  解决: 1
[提交][状态][讨论版][命题人:]

题目描述

小平有一个 n 行 m 列的矩阵 a[i][j] ,他想在矩阵中找出一个“口”字形状的区域,使得区域上的值的和最大。

具体讲,一个“口”字形状的区域可以由两个坐标 (x1, y1) 和 (x2, y2) 确定,满足:

  • 1 <= x1 < x2 <= n ;
  • 1 <= y1 < y2 <= m ;
  • x2 - x1 = y2 - y1 。

对应的区域由满足以下条件之一的点 (x, y) 构成:

  • x1 <= x <= x2,且 y = y1 ,对应“口”的左边一竖;
  • y1 <= y <= y2,且 x = x1 ,对应“口”的上面一横;
  • x1 <= x <= x2,且 y = y2 ,对应“口”的右边一竖;
  • y1 <= y <= y2,且 x = x2 ,对应“口”的下面一横。

请注意有些点满足以上条件的多个,例如左上角的点 (x1, y1) ,在计算时算为一个点。

区域上的值是指对应区域的所有点的值,即“口”字的框上的值,不含框内和框外的值。

输入描述

输入的第一行包含两个整数 n, m ,分别表示行数和列数。

接下来 n 行,每行包含 m 个整数,相邻数之间使用一个空格分隔,依次表示矩阵的每行每列的值,本部分的第 i 行第 j 列表示 a[i][j] 

输出描述

输出一行包含一个整数,表示最大的和。

样例输入

5 6
1 -1 2 -2 3 -3
-1 2 -2 3 -3 4
2 -2 3 -3 4 -4
-2 3 -3 4 -4 5
3 -3 4 -4 5 -5

样例输出

4
[提交][状态]
ACM算法攻关部