fundo
Quero comprar um terreno e construir minha casa. Minha casa deve ser retangular e o maior possível; no entanto, os lotes disponíveis têm muitas áreas rochosas nas quais não posso construir e estou tendo problemas para instalar uma casa em potencial nos lotes. Quero que você escreva um programa que analise as parcelas para mim.
Entrada e saída
Sua entrada é uma matriz 2D retangular de bits, com tamanho de pelo menos 1 × 1, em qualquer formato razoável. A matriz representa um lote de terra; 1
s são áreas "boas" onde eu poderia construir minha casa 0
es são áreas "rochosas" onde a casa não pode ser construída.
Sua saída deve ser a área máxima de um retângulo sólido de 1
s na matriz de entrada. Representa a área da maior casa que pude construir no terreno. Observe que, se não houver 1
s na entrada, a saída será 0
.
Exemplo
Considere a entrada
101
011
111
O maior retângulo de 1
s é o retângulo 2 × 2 no canto inferior direito. Isso significa que a saída correta é 4
.
Regras e pontuação
Você pode escrever um programa completo ou uma função. A menor contagem de bytes vence e as brechas padrão não são permitidas.
Casos de teste
0
-> 0
1
-> 1
00
00
-> 0
01
10
-> 1
01
11
-> 2
111
010
111
-> 3
101
011
111
-> 4
0111
1110
1100
-> 4
1111111
1110111
1011101
-> 7
111011000
110111100
001111110
011111111
001111110
000111100
000011000
-> 20
000110000
110110010
110111110
110011100
010011111
111111111
111101110
-> 12
plow
.