TopcoderArchiveVisit Topcoder
SRM12 Nov 2008
SRM 425

PiecesMover

Problem statement, definition, constraints, and public examples.

Problem Statement

You are given a 5x5 board containing at most 5 pieces. Your task is to move the pieces so that the cells occupied by them form a connected component. A connected component is a set of cells where each pair of cells is connected by at least one path. Consecutive cells in a path must all be adjacent. Two cells are called adjacent if they share a common edge.

You are given a String[] board, where the j-th character of the i-th element is '*' if cell (i, j) is occupied by a piece and '.' otherwise. Return the minimum number of moves required to achieve your goal. Each move consists of moving one piece to an adjacent empty cell.

Definition

Class:
PiecesMover
Method:
getMinimumMoves
Parameters:
String[]
Returns:
int
Method signature:
int getMinimumMoves(String[] board)
(be sure your method is public)

Constraints

  • board will contain exactly 5 elements.
  • Each element of board will contain exactly 5 characters.
  • Each character in board will be either '.' or '*'.
  • board will contain between 1 and 5 '*' characters, inclusive.

Examples

  1. {".....",
     "..**.",
     ".....",
     "...*.",
     "....."}
    
    Returns: 1
    + + + + + + + O O + + + + O + | + + + . + + + + + +
  2. {".....",
     ".....",
     ".**..",
     ".*...",
     "**..."}
    
    Returns: 0
    The cells occupied by pieces have already formed a connected component.
  3. {"*...*",
     ".....",
     ".....",
     ".....",
     "*...*"}
    
    Returns: 12
    . + +-+-. | | + + + + + | | +-O O O-+ | + O + + + | | .-+ + + .
Back to all problems