Contexte
Je veux acheter un terrain et y construire ma maison. Ma maison doit être rectangulaire et aussi grande que possible; cependant, les parcelles disponibles ont beaucoup de zones rocheuses sur lesquelles je ne peux pas construire, et j'ai du mal à installer une maison potentielle sur les parcelles. Je veux que vous écriviez un programme qui analyse les parcelles pour moi.
Entrée et sortie
Votre entrée est un tableau 2D rectangulaire de bits, de taille au moins 1 × 1, dans n'importe quel format raisonnable. Le tableau représente une parcelle de terrain; 1
s sont de "bonnes" zones où je pourrais construire ma maison, et 0
s sont des zones "rocheuses" où la maison ne peut pas être construite.
Votre sortie doit être l'aire maximale d'un rectangle plein de 1
s dans le tableau d'entrée. Il représente la superficie de la plus grande maison que j'ai pu construire sur le terrain. Notez que s'il n'y a pas de 1
s dans l'entrée, alors la sortie l'est 0
.
Exemple
Considérez l'entrée
101
011
111
Le plus grand rectangle de 1
s est le rectangle 2 × 2 dans le coin inférieur droit. Cela signifie que la sortie correcte est 4
.
Règles et notation
Vous pouvez écrire un programme complet ou une fonction. Le nombre d'octets le plus bas l'emporte et les failles standard sont interdites.
Cas de 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
.