sfondo
Voglio comprare un appezzamento di terra e costruirci sopra la mia casa. La mia casa dovrebbe essere rettangolare e il più grande possibile; tuttavia, le trame disponibili hanno molte aree rocciose su cui non posso costruire, e sto avendo problemi a sistemare una potenziale casa sulle trame. Voglio che tu scriva un programma che analizzi le trame per me.
Ingresso e uscita
Il tuo input è un array 2D rettangolare di bit, di dimensioni almeno 1 × 1, in qualsiasi formato ragionevole. La matrice rappresenta un appezzamento di terra; 1
sono aree "buone" dove potrei costruire la mia casa, e 0
sono aree "rocciose" dove la casa non può essere costruita.
L'output deve essere l'area massima di un rettangolo solido di 1
s nell'array di input. Rappresenta l'area della casa più grande che potrei costruire sulla trama. Notare che se non ci sono 1
s nell'input, allora lo è 0
.
Esempio
Considera l'input
101
011
111
Il rettangolo più grande di 1
s è il rettangolo 2 × 2 nell'angolo in basso a destra. Ciò significa che è l'output corretto 4
.
Regole e punteggio
È possibile scrivere un programma completo o una funzione. Vince il conteggio di byte più basso e non sono consentite scappatoie standard.
Casi test
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
.