TopcoderArchive
Archive
Algorithm problem

CityBuses

Problem statement, definition, constraints, and public examples.

Problem Statement

You are given a String[] blocks representing the layout of a city. Each character of each element of blocks represents one city block. A 'B' character represents a bus stop, and a '-' represents all other spaces.

The fare for traveling on the bus is equal to the manhattan distance (difference in X-coordinates plus difference in Y-coordinates, see the first example for clarification) between the starting and ending bus stops. Return the largest possible fare for a trip from one bus stop to another.

Definition

Class:
CityBuses
Method:
maximumFare
Parameters:
String[]
Returns:
int
Method signature:
int maximumFare(String[] blocks)
(be sure your method is public)

Constraints

  • blocks will contain between 1 and 50 elements, inclusive.
  • Each element of blocks will contain between 1 and 50 characters, inclusive.
  • Each element of blocks will contain the same number of characters.
  • Each character of each element of blocks will be 'B' or '-'.
  • There will be at least two bus stops.

Examples

  1. {"B--",
     "B--",
     "--B"}
    
    Returns: 4
    Starting from the top-left, the coordinates of the bus stops are (0,0), (1,0), and (2,2). The distance is the difference in X-coordinates plus the difference in y-coordinates. So, the distance between each pair of bus stops is as follows: (0,0) - (1,0) : 1 + 0 = 1 (1,0) - (2,2) : 1 + 2 = 3 (0,0) - (2,2) : 2 + 2 = 4 The largest distance (thus the highest fare) is 4.
  2. {"--B",
     "---",
     "-B-"}
    Returns: 3
    There's only one route we can take, and it has a distance of 3.
  3. {"--B-",
     "B---",
     "-B-B",
     "B---"}
    
    Returns: 5
    The largest distance here is from (0,2) to (3,0).
  4. {"BB"}
    Returns: 1
    A short, and unexciting bus ride.
Back to all problems