![6086e66fcf84aec6d66599ca2a9cf4eb.png](https://i-blog.csdnimg.cn/blog_migrate/47ea75a664b0e243b83d7f799f15e6dd.jpeg)
请大家考虑下如何来描述以下算法。可以用文字或数学方法来说明,也可用C语言来描述。
【题目描述】
矩阵m*n((0<m,n<=300),其中任一个元素值可能为负,但保证绝对值不超过200。
求mm*nn的子矩阵(0<=mm<=m,0<=nn<=n,一定是长方形,长宽均为整数)使其各元素之和的值最大(最大子矩阵)。
如果任一子矩阵的各元素之和均为负值,请输出0。
【输入格式】
第1行两个整数,m和n;
接下来有m行,每行n个空格隔开的整数,表示该矩阵的各元素值。
【输出格式】
输出一个非负整数,表示能获得的最大子矩阵的各元素的和。
并给出子矩阵在原矩阵的位置。(第一个元素在原矩阵中的行下标,列下标,mm,nn)。【样例输入】
4 4
0 -2 -7 0
9 2 -6 2
-4 1 -4 1
-1 8 0 -2
【样例输出】
15
【提示】
样例解释: 获得最大美味值的矩形为:
9 2
-4 1
-1 8