Hintergrund
Ich möchte ein Grundstück kaufen und darauf mein Haus bauen. Mein Haus sollte rechteckig und so groß wie möglich sein; Die verfügbaren Parzellen haben jedoch viele felsige Gebiete, auf denen ich nicht bauen kann, und ich habe Probleme, ein potenzielles Haus auf den Parzellen zu errichten. Ich möchte, dass Sie ein Programm schreiben, das die Handlungen für mich analysiert.
Ein- und Ausgabe
Ihre Eingabe ist ein rechteckiges 2D-Array von Bits mit einer Größe von mindestens 1 × 1 in einem angemessenen Format. Das Array stellt ein Grundstück dar; 1
s sind "gute" Gebiete, in denen ich mein Haus bauen könnte, und0
s sind "felsige" Gebiete, in denen das Haus nicht gebaut werden kann.
Ihre Ausgabe soll die maximale Fläche eines durchgezogenen Rechtecks von 1
s im Eingabearray sein. Es ist die Fläche des größten Hauses, das ich auf dem Grundstück bauen konnte. Beachten Sie, dass 1
der Ausgang ist , wenn der Eingang kein s enthält0
.
Beispiel
Betrachten Sie die Eingabe
101
011
111
Das größte Rechteck von 1
s ist das 2 × 2-Rechteck in der unteren rechten Ecke. Dies bedeutet, dass die richtige Ausgabe ist 4
.
Regeln und Wertung
Sie können ein vollständiges Programm oder eine Funktion schreiben. Die niedrigste Byteanzahl gewinnt, und Standardlücken sind nicht zulässig.
Testfälle
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
.