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ę; 1s są „dobrymi” obszarami, w których mógłbym zbudować mój dom, i 0s są „kamienistymi” obszarami, w których domu nie można zbudować.
Twój wynik powinien być maksymalnym obszarem pełnego prostokąta 1sw tablicy wejściowej. Reprezentuje powierzchnię największego domu, jaki mogłem zbudować na działce. Zauważ, że jeśli 1na wejściu nie ma żadnych znaków, to wynikiem jest 0.
Przykład
Rozważ dane wejściowe
101
011
111
Największy prostokąt 1s 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.