把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; } }