把mat矩阵看成一个个一维数组,按照一维数组的思路测出每个数组的最大和,由于是二维,所以添加了一个一维数组sum求和,接下来和一维数组思路一样。
import java.util.*;
public class SubMatrix {
public int sumOfSubMatrix(int[][] mat, int n) {
// write code here
int max = 0;
int[] sum;
int temp;
for (int i = 0; i < n; i++) {
sum = new int[n];
for (int j = i; j < n; j++) {
temp = 0;
for (int k = 0; k < n; k++) {
sum[k] += mat[j][k];
temp = temp + sum[k] > 0 ? temp + sum[k] : 0;
max = max < temp ? temp : max;
}
}
}
return max;
}
}
京公网安备 11010502036488号