public class L0085 { public static void main(String[] args) throws Exception { char[][] g = {{'0','0','0','0','0','0','1'},{'0','0','0','0','1','1','1'},{'1','1','1','1','1','1','1'},{'0','0','0','1','1','1','1'}}; System.out.print(maximalRectangle(g)); } public static int maximalRectangle(char[][] matrix) { int x, y; int i,j; int row = matrix.length; int col; if (row == 0){ return 0; } else{ col = matrix[0].length; } int sum = 0; for (x = 0; x < row; x++) { for (y = 0; y < col; y++) { if (matrix[x][y] == '1') { i = x; j = y; int a = 1; int b = 1; int k; int sum2 = 0; while (i < row) { if (matrix[i][y] == '1') { //竖着往下遍历 i++; a = i - x; j = y + 1; int temp = j; while (j < col) { for (k = x; k < i; k++){ if (matrix[k][j] == '0'){ //遇到横的为零 temp = j; b = temp - y; j = col; break; } else{ temp = j + 1; } } j++; } b = temp - y; if (a*b > sum2){ sum2 = a*b; } } else{ break; } } if (sum2 > sum){ sum = sum2; } } } } return sum; } }