Problem Statement
There are 4n elephants around the field: one per each cell boundary, as shown in the pictures below. The elephants can use their trunks to drink water. Each elephant can only extend its trunk straight into the field. So, for example, the elephants that are on the left side of the field can only extend their noses towards the right. The trunks are long enough to reach the opposite end of the field.

There are two additional restrictions: The trunks of elephants are not allowed to intersect. For each cell with water, there can be at most one elephant drinking from that cell.
For example, figure (a) below shows a valid configuration. Cells with water are blue, elephants are green, and their trunks are red. In the figure there are four elephants that drink. Figures (b) and (c) show invalid configurations. In both of them the trunks intersect.
Your task is to return the maximal number of elephants who can drink at the same time.
Definition
- Class:
- ElephantDrinkingEasy
- Method:
- maxElephants
- Parameters:
- String[]
- Returns:
- int
- Method signature:
- int maxElephants(String[] map)
- (be sure your method is public)
Constraints
- n will be between 2 and 5, inclusive.
- field will contain exactly n elements, inclusive.
- Each element in field will contain exactly n characters, inclusive.
- Each character in field will be 'Y' or 'N'.
Examples
{"NNNNN", "NNYYN", "NYNNN", "NNYNN", "NNNNN"}
Returns: 4
This is the field shown in the figure in the problem statement. As shown in figure (a), four elephants can drink at the same time. And as we only have four cells with water, this is clearly optimal.
{"YYY", "YYY", "YYY"}
Returns: 8
It is possible for the elephants to drink from 8 cells at the same time. For example, a suitable set of 8 elephants can drink from all cells except for the one in the center. It is not possible for the elephants to drink from all 9 cells at the same time.
{"YNYN", "NNYY", "YYNN", "YYYY"}
Returns: 10
{"YNYN", "YNYY", "YYNN", "YYYY"}
Returns: 10
{"YYNYN", "NYNNY", "YNYNN", "YYNYY", "YYNNN"}
Returns: 12
{"YYNYN", "NYNYY", "YNYYN", "YYNYY", "YYNNN"}
Returns: 13
{"NN", "NN"}
Returns: 0
There can be no water at all.
{"YYYY","YYYY","YYYY","YYYY"}
Returns: 12
{"YYYN","YYNY","NNNN","YNYY"}
Returns: 9
{"NNYY","NNNN","NNNY","NNNN"}
Returns: 3
{"YYY","NNN","YNY"}
Returns: 5
{"YYYYY","YNNNN","YYYYY","YNYYY","YNYNY"}
Returns: 15
{"YYYY","YNYY","YYYY","YNNY"}
Returns: 12
{"NNNNN","YNNYN","NNNNN","NNNNY","NNNNN"}
Returns: 3
{"NNNNN","NNNNN","NNNNN","NNNNN","NNNNN"}
Returns: 0
{"NNNNN","NNNNN","NNNNN","NYNNN","NNNNY"}
Returns: 2
{"YYY","YNY","YNY"}
Returns: 7
{"NNN","NYN","NNN"}
Returns: 1
{"YNN","YNY","YYY"}
Returns: 6
{"NNNN","NNNN","NNNN","NNNN"}
Returns: 0
{"YYYYY","YYYYY","YNNNY","YYYYY","YNYYY"}
Returns: 16
{"YY","YN"}
Returns: 3
{"YYY","YYY","YYY"}
Returns: 8
{"NNNYN","NNNNN","NNNNN","NNNNY","YYYNN"}
Returns: 5
{"NNYY","NYNN","NNYN","NYYY"}
Returns: 7
{"YNY","YYY","YNN"}
Returns: 6
{"YYYY","NYYY","YYYY","YYYY"}
Returns: 12
{"YYY","YNN","YYN"}
Returns: 6
{"YY","YY"}
Returns: 4
{"YNYY","NYYY","YNYY","YYYY"}
Returns: 11
{"NNN","YNN","NNN"}
Returns: 1
{"NYNYN","NNNNN","NNNNN","NNNYN","NNNNN"}
Returns: 3
{"YYYYN","YYNYY","YYYNY","YYNYY","YYYYY"}
Returns: 15
{"NNY","YNN","NNN"}
Returns: 2
{"NNNN","NNNN","NNNN","NNNY"}
Returns: 1
{"NNN","NNN","NNN"}
Returns: 0
{"NNYY","YYYN","NNNN","NYNY"}
Returns: 7
{"NN","NN"}
Returns: 0
{"YY","YY"}
Returns: 4
{"NNN","NNN","NNY"}
Returns: 1
{"NN","NN"}
Returns: 0
{"YYYYN","YNYYY","YYYYY","YYNYN","YNYNY"}
Returns: 14
{"YNYYY","YYNNY","YYYYY","NYYNY","YYNYN"}
Returns: 15
{"NNYN","YYNY","YYNY","YNNN"}
Returns: 8
{"YYYY","YYYY","YYYY","YYYY"}
Returns: 12
{"YNNN","NNNN","NNYY","NYYN"}
Returns: 5
{"NNNN","NNNN","NNYY","NNNY"}
Returns: 3
{"YYYY","YYYY","YYYY","NYYY"}
Returns: 11
{"YYYY","YNYN","YNYN","NYYN"}
Returns: 10
{"NNNN","NNNY","NNNN","NYNN"}
Returns: 2
{"YYY","YNY","NNN"}
Returns: 5
{"YNNY","YYYN","YYNY","YYNY"}
Returns: 10
{"NY","NN"}
Returns: 1
{"YYNYN","NNNNN","YYYYY","YNYYN","YNYNY"}
Returns: 12
{"YNY","YYY","YYY"}
Returns: 8
{"YY","YY"}
Returns: 4
{"NNNNY","NYNNN","NNNNN","NYNYN","NNNYY"}
Returns: 6
{"YNN","YNN","NNN"}
Returns: 2
{"YNNYN","YYYYY","NNYYY","YYNYN","YNYYY"}
Returns: 15
{"NNY","NYN","NNN"}
Returns: 2
{"NYNN","YYYN","YNYY","YYYN"}
Returns: 8
{"NNNN","YNYN","YNNN","YYYN"}
Returns: 6
{"NYYYN","YNYNY","YYNNN","NYNYY","YNNNN"}
Returns: 11
{"YNYYY","NYNNY","NYYYY","NYNNN","YYNNY"}
Returns: 14
{"YNNYY","YYNNN","YNYNN","YNNYN","NNNNN"}
Returns: 9
{"YYNY","YNNN","YYYY","NYYN"}
Returns: 9
{"YNYNN","NNNYN","NNYNN","NNYNY","YNNYN"}
Returns: 8
{"NN","NN"}
Returns: 0
{"NNNY","NNNY","YNNN","NNNN"}
Returns: 3
{"NNNNN","NNNNN","YNNNN","NNNNN","NNNNY"}
Returns: 2
{"YYNN","NNNN","NYYN","YYNY"}
Returns: 7
{"YY","NY"}
Returns: 3
{"NYNN","YNNN","NNYY","NNYN"}
Returns: 5
{"YY","YY"}
Returns: 4
{"YYYY","YYYN","NYYY","YYYN"}
Returns: 11
{"YYY","YNY","YYN"}
Returns: 7
{"NNNNN","NNNNN","NNNNN","NNNNN","NNNNY"}
Returns: 1
{"NNN","NNN","NNN"}
Returns: 0
{"YYY","NYY","YNN"}
Returns: 6
{"NNNNN","NYYNN","NNNNN","NNNNN","NNNNN"}
Returns: 2
{"NY","YY"}
Returns: 3
{"YNY","YYN","YYN"}
Returns: 6
{"NN","NN"}
Returns: 0
{"NN","YN"}
Returns: 1
{"YNYY","YNYN","YNNN","NNNY"}
Returns: 7
{"YYYYY","YYYNY","YYNYN","YYYYN","NYYYN"}
Returns: 14
{"NNNNY","NNNNN","NYNNN","YYNNY","NNYNY"}
Returns: 7
{"YY","YY"}
Returns: 4
{"NNNN","NYNN","NNNY","NNNY"}
Returns: 3
{"YYNN","YNYN","YYYY","YYNN"}
Returns: 9
{"YNN","YYY","NYN"}
Returns: 5
{"YYY","NNN","NYY"}
Returns: 5
{"NNNN","NNNN","NNNN","NYNN"}
Returns: 1
{"YN","NN"}
Returns: 1
{"NNNNN","NNYNN","NNNYN","NNNNN","NNNNN"}
Returns: 2
{"YNN","NYN","YNN"}
Returns: 3
{"YNNYN","NNNNY","YNNNN","NYYNY","YYNYY"}
Returns: 11
{"NYNY","YYYN","YYNY","YYYY"}
Returns: 10
{"YYYYY","YYNYN","YNNNY","YYYYN","YYYYN"}
Returns: 15
{"YNNNN","NNYYY","YYYYY","NNNNY","YYYYY"}
Returns: 13
{"NNNNN","NYNNN","NNNNN","NNNNN","NNYYN"}
Returns: 3
{"NNNNN","NNNNN","NNNNN","NNNNN","NNNNN"}
Returns: 0
{"YNYY","YNYY","YYYY","YNYY"}
Returns: 11
{"YYNYY","YYYNY","YNYNY","NNYNY","YNNYY"}
Returns: 15
{"NN","NN"}
Returns: 0
{"NNN","NYN","NYN"}
Returns: 2
{"NNN","NNN","NNN"}
Returns: 0
{"YYYYY","YYYYY","YYYYY","YYYYY","YYYYY"}
Returns: 16
{"YNYN", "YNYY", "YYNN", "YYYY" }
Returns: 10
{"YNYN", "NNYY", "YYNN", "YYYY" }
Returns: 10
{"NYYN", "YNYY", "YYNN", "NYNN" }
Returns: 7
{"YYYY", "YYYY", "YYYY", "YYYY" }
Returns: 12
{"YYNNN", "YYNNN", "YYYYY", "YYYYY", "NNNNN" }
Returns: 12
{"YYNYN", "NYNYY", "YNYYN", "YYNYY", "YYNNN" }
Returns: 13
{"NNYYN", "NNYYN", "YYNNN", "NYNNN", "NNNNN" }
Returns: 7
{"NNNYN", "YNNNN", "NNNYY", "YYYNY", "YYYYY" }
Returns: 12
{"YYYY", "YYYY", "NNYY", "YNYY" }
Returns: 11
{"NNYY", "NNYY", "YYYN", "NYNN" }
Returns: 7
{"YNNNY", "NYYNY", "YYYYY", "NNNNN", "NNNNN" }
Returns: 10
{"NYYNN", "NYYNN", "YNNYY", "YNNYY", "NYYNN" }
Returns: 11
{"YNYNN", "NYYNY", "NYYYN", "NYYYN", "YNNNN" }
Returns: 10