Use this to learn the idea, then write your own version.
1class Solution {2 public int minimumSum(int[][] grid) {3 final int m = grid.length;4 final int n = grid[0].length;5 int ans = m * n;6 7 for (int i = 0; i < m; ++i) {8 final int top = minimumArea(grid, 0, i, 0, n - 1);9 for (int j = 0; j < n; ++j)10 ans = Math.min(ans, top + minimumArea(grid, i + 1, m - 1, 0, j) +11 minimumArea(grid, i + 1, m - 1, j + 1, n - 1));12 }13 14 for (int i = 0; i < m; ++i) {15 final int bottom = minimumArea(grid, i, m - 1, 0, n - 1);16 for (int j = 0; j < n; ++j)17 ans = Math.min(ans, bottom + minimumArea(grid, 0, i - 1, 0, j) +18 minimumArea(grid, 0, i - 1, j + 1, n - 1));19 }20 21 for (int j = 0; j < n; ++j) {22 final int left = minimumArea(grid, 0, m - 1, 0, j);23 for (int i = 0; i < m; ++i)24 ans = Math.min(ans, left + minimumArea(grid, 0, i, j + 1, n - 1) +25 minimumArea(grid, i + 1, m - 1, j + 1, n - 1));26 }27 28 for (int j = 0; j < n; ++j) {29 final int right = minimumArea(grid, 0, m - 1, j, n - 1);30 for (int i = 0; i < m; ++i)31 ans = Math.min(ans, right + minimumArea(grid, 0, i, 0, j - 1) +32 minimumArea(grid, i + 1, m - 1, 0, j - 1));33 }34 35 for (int i1 = 0; i1 < m; ++i1)36 for (int i2 = i1 + 1; i2 < m; ++i2)37 ans = Math.min(ans, minimumArea(grid, 0, i1, 0, n - 1) +38 minimumArea(grid, i1 + 1, i2, 0, n - 1) +39 minimumArea(grid, i2 + 1, m - 1, 0, n - 1));40 41 for (int j1 = 0; j1 < n; ++j1)42 for (int j2 = j1 + 1; j2 < n; ++j2)43 ans = Math.min(ans, minimumArea(grid, 0, m - 1, 0, j1) +44 minimumArea(grid, 0, m - 1, j1 + 1, j2) +45 minimumArea(grid, 0, m - 1, j2 + 1, n - 1));46 47 return ans;48 }49 50 private int minimumArea(int[][] grid, int si, int ei, int sj, int ej) {51 int x1 = Integer.MAX_VALUE;52 int y1 = Integer.MAX_VALUE;53 int x2 = 0;54 int y2 = 0;55 for (int i = si; i <= ei; ++i)56 for (int j = sj; j <= ej; ++j)57 if (grid[i][j] == 1) {58 x1 = Math.min(x1, i);59 y1 = Math.min(y1, j);60 x2 = Math.max(x2, i);61 y2 = Math.max(y2, j);62 }63 return x1 == Integer.MAX_VALUE ? 0 : (x2 - x1 + 1) * (y2 - y1 + 1);64 }65}66