MinimumTours
SRM 411 · 2008-07-24 · by hken
Problem Statement
She bought a map of all the islands in the bay. This map is given in the
A tour is a sequence of islands where there is a trip between every pair of consecutive islands in the sequence. Little Bonnie wants to visit every island exactly once, and she wants to do this using the minimum possible number of tours. Return the number of tours she will have to take.
Notes
- It is possible for a tour to have only one island.
- Bonnie cannot leave the mapped area at any time.
- It is assumed that Bonnie has another way to travel from the last island of one tour to the first island of another tour, so you don't have to take this into account when solving the problem.
Constraints
- islandMap will contain between 1 and 50 elements, inclusive.
- Each element of islandMap will contain between 1 and 50 characters, inclusive.
- Each element of islandMap will contain the same number of characters.
- Each character in islandMap will be either '.' or lowercase 'x'.
- There will be at least one island in the map.
{
"..x..x..x..",
"..x..x..x..",
"..x..x..x..",
"..x..x..x.."
}
Returns: 1
Only one tour is needed. Bonnie can just go from the leftmost island through the middle one to the rightmost island. Or she can choose to go in the reverse way.
{
"x....x....x",
".....x.....",
".....x.....",
".....x.....",
"xxxxxxxxxxx",
".....x.....",
".....x.....",
".....x.....",
"x....x....x"
}
Returns: 3
At least three tours are required to cover the five islands. One possible set of three tours is to go from the small island in the top-left corner through the big cross-shaped island to the top-right island, and each of the two other islands makes up a one-island tour.
{
"x....x....x",
".....x.....",
".....x.....",
"....x.x....",
"xxxx...xxxx",
"....x.x....",
".....x.....",
".....x.....",
"x....x....x"
}
Returns: 1
There is always a trip between any two islands. So only one tour is enough to visit all five islands.
{
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"x............................x",
"x..xxxxxxxxxx....xxxxxxxxxx..x",
"x..x........x....x........x..x",
"x..x..xxxx..x....x.xxxxxx.x..x",
"x..x........x....x.x....x.x..x",
"x..xxxxxxxxxx....x.x.x..x.x..x",
"x................x.x....x.x..x",
"x................x.xxxxxx.x..x",
"x..xxxxxxxxxx....x........x..x",
"x..x........x....x........x..x",
"x..x..xxxx..x....x.xxxxxx.x..x",
"x..x........x....x........x..x",
"x..xxxxxxxxxx....xxxxxxxxxx..x",
"x............................x",
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
Returns: 2
An island can be nested inside another one. And two tours are needed in this example.
{
"..........x..........",
"xxxxxxxxxxxxxxxxxxxxx",
"..........x..........",
"..........x.xxxxxxx..",
"..........x.x.....x..",
"..........x.x.x.x.x..",
"..........x.x.....x..",
"..........x.xxxxxxx..",
"..........x..........",
"..........x.xxxxxxx..",
"..........x.x.....x..",
"..........x.x.x.x.x..",
"..........x.x.....x..",
"..........x.xxxxxxx..",
"..........x.........."
}
Returns: 1
Submissions are judged against all 158 archived test cases, of which 5 are shown here. Case numbers match the judge’s.
Language: C++17 · define a public class MinimumTours with a public method int getMinimumTours(vector<string> islandMap) · 158 test cases · 2 s / 256 MB per case