最大子阵
给定一个n×m的矩阵A,求A中的一个非空子矩阵,使这个子矩阵中的元素和最大。其中,A的子矩阵指在A中行和列均连续的一部分。
输入格式
输入的第一行包含两个整数n,m(1≤n,m≤50),分别表示矩阵A的行数和列数。
接下来n行,每行m个整数,表示矩阵Aij(-1000≤Ai,j≤1000)。
输出格式
输出一行,包含一个整数,表示A中最大子矩阵的元素和。
样例输入
3 3
2 -4 1
-1 2 1
4 -2 2
样例输出
6
看了好多普遍算法,不甚懂,找到一种比较易于理解的算法。
用一个例子来解释:
1. 第一步,存入想要计算的矩阵 ( n*m的矩阵)
s矩阵大小 n * m
存入 名为s的 3*3 的矩阵
2. 第二步,计算每一行的组合的所有可能,存入ls矩阵
ls矩阵大小为 n * (m*(m+1)/2)
先横着计算,即算每一行的所有子行的结果,将所有子行结果存入一个 36的 名为ls 矩阵
(6是用 n