Problem Statement
Fox Jiro came to a flower shop to buy flowers.
The flowers in the shop are arranged in some cells of a rectangular grid.
The layout of the grid is given as a
In order to buy flowers, Jiro has to draw a rectangle on this grid and buy all the flowers which lie inside the rectangle. Of course, the sides of the rectangle must be on cell boundaries. (Therefore, the sides of the rectangle will necessarily be parallel to the coordinate axes.)
Jiro wants to buy as many flowers as possible. Unfortunately, he cannot select the entire grid. Eel Saburo came to this shop before Jiro. Saburo has already drawn his rectangle. Saburo's rectangle contains just a single cell: the c-th cell of the r-th row of the grid. (Again, both indices are 0-based.) Jiro's rectangle may not contain this cell.
You are given the
Definition
- Class:
- FoxAndFlowerShopDivTwo
- Method:
- theMaxFlowers
- Parameters:
- String[], int, int
- Returns:
- int
- Method signature:
- int theMaxFlowers(String[] flowers, int r, int c)
- (be sure your method is public)
Constraints
- flowers will contain R elements.
- R will be between 2 and 10, inclusive.
- Each element of flowers will contain C characters.
- C will be between 1 and 10, inclusive.
- Each character in flowers will be either 'F' or '.'.
- r will be between 0 and R - 1, inclusive.
- c will be between 0 and C - 1, inclusive.
Examples
{"F.F", ".F.", ".F."}
1
1
Returns: 2
The forbidden cell is the one in the middle. Jiro can buy two flowers by drawing a rectangle that contains the entire first row.
{"F..", "...", "..."}
0
0
Returns: 0
There are no flowers Jiro can buy.
{".FF.F.F", "FF...F.", "..FF.FF"}
1
2
Returns: 6
{"F", ".", "F", "F", "F", ".", "F", "F"}
4
0
Returns: 3
{".FFF..F...", "FFF...FF.F", "..F.F.F.FF", "FF..F.FFF.", "..FFFFF...", "F....FF...", ".FF.FF..FF", "..F.F.FFF.", ".FF..F.F.F", "F.FFF.FF.F"}
4
3
Returns: 32
{"F","F"}
0
0
Returns: 1
{".","."}
0
0
Returns: 0
{"F","."}
0
0
Returns: 0
{".","F"}
0
0
Returns: 1
{"F","."}
1
0
Returns: 1
{"F.",".F"}
0
0
Returns: 1
{"F.F..","F...F","F....","F..F.","F.F.."}
2
1
Returns: 5
{"FFF","FFF","FFF"}
0
0
Returns: 6
{"FFF","FFF","FFF"}
1
0
Returns: 6
{"FFF","FFF","FFF"}
2
0
Returns: 6
{"FFF","FFF","FFF"}
0
2
Returns: 6
{"FFF","FFF","FFF"}
1
1
Returns: 3
{"..","..","..","..","..",".F",".."}
6
1
Returns: 1
{"..F....","FFFFF..","F..F.FF","...F.FF","F.FFF..","F.FFF.F","FFF.F..","..FF.F.","FF.FFFF"}
0
3
Returns: 34
{"F.F.",".FF.","F...","F.F.","FF.F","F..F","F.F.","F..F","F.FF"}
7
2
Returns: 14
{"FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"}
4
5
Returns: 40
{".F...","FFF.F","F...F","..FFF","..F.F","F.F.F","...F.","..F..",".FF.F"}
3
3
Returns: 12
{"..F..F.F","F.F..F.."}
0
2
Returns: 3
{"..","..",".."}
1
0
Returns: 0
{"FF.....","F......",".......",".......",".......","...F..F",".......","....F.."}
7
5
Returns: 5
{"..","..","..","..","..","..","..",".."}
7
1
Returns: 0
{"......","......","......","F.....","F.....","......","......"}
5
3
Returns: 2
{"...","...","...","..F",".F.","..F"}
4
0
Returns: 3
{"..F.F.F.","...FF...","...F....","........","..FF....","........"}
1
7
Returns: 8
{"...","..F"}
0
1
Returns: 1
{"...F",".F..","....","....","....","....","....","....",".F.F","...."}
0
1
Returns: 3
{".......","...F...",".......",".......",".F.....",".......","...F..F"}
2
2
Returns: 3
{"..FFF","F.FF.","FF...","..F.F",".F...","F....",".F..."}
6
0
Returns: 12
{"..F.FF...","..FFFF..."}
1
3
Returns: 4
{"...F..","......","......",".....F","......","......","......","......","......","......"}
9
4
Returns: 2
{".....FF..F","..........","..........","..........",".....F....","........F."}
0
4
Returns: 5
{"FF..FF..","F..FF.F.",".....FFF",".F..F.F.","F.F.FF..","F.F..FF.",".F.....F","FF...FF.",".....F..",".F.F..F."}
7
4
Returns: 24
{"....F..","F....F.","FF.F..."}
2
5
Returns: 5
{".........",".........",".........",".........",".........",".........",".........",".........","........."}
2
8
Returns: 0
{".",".","F",".",".",".",".","."}
5
0
Returns: 1
{"FFFFFFFFF","F.F.FFFFF","F.F.FFFFF",".FFFFFFF."}
0
4
Returns: 21
{"FFFF.F","F..FFF","FF.FFF","FFFFFF","FFFFF.","F.FFF."}
2
0
Returns: 23
{"F","F",".",".","F"}
3
0
Returns: 2
{"..","..","..","..",".."}
0
1
Returns: 0
{"......F..","F........","...F...F.","..F.FF.FF","..F......","..F....FF",".F..FF..F",".F..FF..F","F.F...F.F","FF......."}
8
7
Returns: 21
{"F..","...","F..",".FF"}
3
1
Returns: 2
{".F.F.....","..F...FF.","...F...F.","....F.F..",".......F.",".....F..F","..FF.....","FF.F....."}
6
6
Returns: 12
{"FFFFFFF","FFFFFF.","FFFFFFF","FFFFFFF","FFFFFFF","FF.FFFF"}
3
2
Returns: 23
{".FF.F...F",".FFFF.F..","FFF.F..F.","...FF....","FF.F.F.FF","FFFF..FFF"}
0
6
Returns: 25
{".....F...","..F...F.."}
0
7
Returns: 3
{"F.F","FFF","FF."}
1
1
Returns: 3
{".",".","F","F"}
1
0
Returns: 2
{"F.","FF","F.","FF","F.","FF",".F",".."}
7
0
Returns: 10
{"..","..","F.","..",".."}
0
0
Returns: 1
{"FFF.FFFFF.",".FF.FFFFFF","FF..FFFFFF","FFFFFFF.FF","F..FF.FFFF","FF.FFF.FF.","FFFFFFFFFF","FFFFFFFFFF"}
1
6
Returns: 51
{"..","..","..","..","..","..",".F"}
2
1
Returns: 1
{".F..F.F...",".F..F.....","..........","F.........","...F......",".F........","........FF","..........","....F.....",".......F.."}
1
6
Returns: 8
{"........FF","..F.......","...F.F....","..F.......","....F...F.","....F.....",".F.......F","..F...F...","..........","....F...F."}
0
0
Returns: 15
{".FF......F","...F......","FF...F....",".....F....",".F.F.....F","...F.F....","F.F.FFF..F","....F...F.",".FF.......","..F......F"}
8
3
Returns: 21
{"....FF...F",".F.FF...F.","......FF.F","..F..F.F.F",".FFF.FF.FF","FF.F.F..FF","F..F..F.FF","F.F.F.F.FF","FF.......F","....F..F.."}
9
2
Returns: 41
{"F..F......","F.FF.F.FFF","FF....FF..",".F..F...F.","..F...FF..","F.F..F.FF.","...F.FF...",".F..F.FF.F","...FF..FFF",".F..F..FFF"}
4
1
Returns: 34
{"..F.F....F","FF....F..F",".FFFFFFF.F","..FFFFFF.F","F.F.F.F.FF","FFFF..F..F","..FFF.FFFF","...FF...FF",".FFFF..FF.",".F...F..F."}
4
1
Returns: 46
{"FF.FF.FF..","FFF..FFFF.","FFFFFFF.FF","FFFFF.FFFF","...F.F..FF","...FF.FF.F","FF.FFFF.FF","...FF..FFF","F.FFF.FFF.","F..FF.FFFF"}
9
4
Returns: 60
{".FFFF..F.F","FFFFFFFFFF","FFF.FFF.FF","FFF.F..F.F","..F.F.FFFF","..F.FF.F..","FFF.FFFFFF","FF..FFFFFF",".FFFFF.FFF","FFFF.FFFFF"}
2
7
Returns: 50
{"F.FFFFFFFF","FFFFF.FFF.","FFFFFFFFFF","FFFFFFFFFF","FFFFFFFFFF","FFFF..FFFF","FFFFF.FF.F","FFFFFFFFFF","FF.F.FFFF.","F.F.FFFFFF"}
9
3
Returns: 80
{"FFFFFFFFFF","FFFFFFFFFF","FFFFFFFFFF","FFFFFFFFFF","FFFFFFFFFF","FFFFFFFFFF","FFFFFFFFFF","FFFFFFFFFF","FFFFFFFFFF","FFFFFFFFFF"}
0
4
Returns: 90
{"F", "F" }
0
0
Returns: 1
{"FF...", "FF...", "FF..." }
1
2
Returns: 6
{"F..", "F..", "F.." }
1
1
Returns: 3
{"..FF", "..FF", "..FF", "..FF" }
1
1
Returns: 8
{".FFF..F...", "FFF...FF.F", "..F.F.F.FF", "FF..F.FFF.", "..FFFFF...", "F....FF...", ".FF.FF..FF", "..F.F.FFF.", ".FF..F.F.F", "F.FFF.FF.F" }
4
3
Returns: 32
{"..F", "..F", "..F" }
1
1
Returns: 3
{".FF", "FFF", "FFF" }
0
0
Returns: 6
{"F.F", "...", "F.." }
1
1
Returns: 2
{".FF.F.F", "FF...F.", "..FF.FF" }
1
2
Returns: 6
{".", "F" }
0
0
Returns: 1
{".FFF..F...", "FFF...FF.F", "..F.F.F.FF", "FF..F.FFF.", "..FFFFF...", "F....FF...", ".FF.FF..FF", "..F.F.FFF.", ".FF..F.F.F", "F.FFF.FF.F" }
1
1
Returns: 43
{"FF.", "FF.", "FF." }
0
2
Returns: 6
{"...", "FF.", "..." }
1
1
Returns: 1
{"F..", "...", "...", "..F" }
0
0
Returns: 1
{"FFF", "FFF", "FFF" }
1
1
Returns: 3
{"FF", "F." }
1
1
Returns: 2
{"...", "F..", "..." }
1
1
Returns: 1