tło
Chcę kupić działkę i zbudować na niej mój dom. Mój dom powinien być prostokątny i tak duży, jak to możliwe; jednak dostępne działki mają wiele skalistych obszarów, na których nie mogę zbudować, i mam problem z dopasowaniem potencjalnego domu na działkach. Chcę, żebyś napisał program, który analizuje dla mnie wykresy.
Wejście i wyjście
Twoje dane wejściowe to prostokątna tablica 2D bitów o wielkości co najmniej 1 × 1, w dowolnym rozsądnym formacie. Tablica przedstawia działkę; 1
s są „dobrymi” obszarami, w których mógłbym zbudować mój dom, i 0
s są „kamienistymi” obszarami, w których domu nie można zbudować.
Twój wynik powinien być maksymalnym obszarem pełnego prostokąta 1
sw tablicy wejściowej. Reprezentuje powierzchnię największego domu, jaki mogłem zbudować na działce. Zauważ, że jeśli 1
na wejściu nie ma żadnych znaków, to wynikiem jest 0
.
Przykład
Rozważ dane wejściowe
101
011
111
Największy prostokąt 1
s to prostokąt 2 × 2 w prawym dolnym rogu. Oznacza to, że poprawne wyjście to 4
.
Zasady i punktacja
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Przypadki testowe
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
.