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; 1sono aree "buone" dove potrei costruire la mia casa, e 0sono aree "rocciose" dove la casa non può essere costruita.
L'output deve essere l'area massima di un rettangolo solido di 1s nell'array di input. Rappresenta l'area della casa più grande che potrei costruire sulla trama. Notare che se non ci sono 1s nell'input, allora lo è 0.
Esempio
Considera l'input
101
011
111
Il rettangolo più grande di 1s è 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.