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

}