Statistics

Problem Statement for "FourBlocksEasy"

Problem Statement

NOTE: This problem statement contains images that may not display properly if viewed outside of the applet.

"4Blocks" is a two player cooperative game played on a special board. The board is a grid composed of 1x1 square cells. The grid is two cells high. There are two different kinds of blocks: '1' blocks and '4' blocks. '1' blocks are 1x1, and '4' blocks are 2x2:


You must place blocks on the board so that their sides are aligned to the grid lines and no two blocks overlap. The final score is the sum of the values in each cell. '1' blocks are worth 1 point, and '4' blocks are worth 16 points because they cover 4 cells and each cell is worth 4 points.

Your friend has taken his turn and placed a number of '1' blocks on the board. The current configuration is given in the String[] grid. The j-th character of the i-th element of grid is '.' if the cell at row i, column j is empty, and '1' if your friend placed a '1' block in that cell. It is now your turn, and you can place any number of '1' or '4' blocks on the board, but you cannot remove any of the blocks that have already been placed. Return the maximum score that can be achieved. For example, the following images show one possible starting state, and the optimal placement of blocks from that state:



The final score would be 4*16 + 6*1 = 70.

Definition

Class:
FourBlocksEasy
Method:
maxScore
Parameters:
String[]
Returns:
int
Method signature:
int maxScore(String[] grid)
(be sure your method is public)

Constraints

  • grid will contain exactly 2 elements.
  • Each element of grid will contain between 1 and 50 characters, inclusive.
  • All elements of grid will contain the same number of characters.
  • Each element of grid will contain only '.' or '1' (one).

Examples

  1. {".....1..1..", "..1.....1.."}

    Returns: 70

    This is the example from the statement.

  2. {"....................", "...................."}

    Returns: 160

    We can fit ten '4' blocks in this setup.

  3. {".1.........11.........", "..1.1......11........."}

    Returns: 128

  4. {".", "."}

    Returns: 2

  5. {"......1.....1...1.", ".................."}

    Returns: 108

  6. {"..", ".."}

    Returns: 16

  7. {"........................1....", "...............1..........1.."}

    Returns: 202

  8. {".........................................", "....................1...................."}

    Returns: 322

  9. {"..............................1...........", "....................1....................."}

    Returns: 312

  10. {".........1.1................", "...1........................"}

    Returns: 188

  11. {"......1...........1.............1.....1......", ".................1.....1....................."}

    Returns: 318

  12. {"...11..1....................", "..............1............."}

    Returns: 188

  13. {"......................1..........1.", ".1........1......1....1............"}

    Returns: 238

  14. {".1.1.............1.......1..............", "........1........................1......"}

    Returns: 260

  15. {".....1.........................................", "....1.....1.1.......1..1......................."}

    Returns: 322

  16. {"...............................1...............1", ".........................1..........11.........1"}

    Returns: 336

  17. {"...1..11.......1....1....", ".1.11.....1.1.........1.."}

    Returns: 110

  18. {"1....1......1...1..........1.......", ".......1...1............1111.1....."}

    Returns: 178

  19. {".........1..1...1..111............1.....1..", ".1......1.......1..1...................1..."}

    Returns: 266

  20. {"........11..1.....1.1.1................", "..1.......1...1......1...1.1...11....1."}

    Returns: 174

  21. {"..1.....1.....1.....1........1...1.1....1...", "1........1....1..1.....1......1..11..11....."}

    Returns: 220

  22. {"..11..1..1..1...1...1.1..1.11.....1...1...", "1..1.11.....1.1..11..1..1111.....1..1...1."}

    Returns: 132

  23. {"....11...1..1...1.1111.1..1..11.1.11..", "..1.11.....1..1...11....1111..1.1..11."}

    Returns: 100

  24. {"111......11..1.1.1.1.1..1.1.1.1....11.", "....11.111..1.111..111...1.1...1111.11"}

    Returns: 88

  25. {"..1..11..1......11.1....1......1..1.1.1.1", "...1.1.1....11..1.1.111.11..111..1.1...1."}

    Returns: 130

  26. {".1.1..1....1.11..1.1..1....1...1", "1..1..11.11....1...1.....1.1..1."}

    Returns: 112

  27. {".1.111.1.111..11.111.1.11..1...1.1..1.1...1...", "1....11.1111....1........1.111.1.....111.11.11"}

    Returns: 116

  28. {"1..1.111.111....11.11...11.", "1.1111...111...1..1.1111.11"}

    Returns: 66

  29. {"11111..1..1.1111..1.11.11111..111...1..", "1.1..1.1.11..11111.11.1.1..1.1111..1.1."}

    Returns: 90

  30. {"..11.11111.1.111....11..1.111", "......1.11...1.1.11.1.1111.11"}

    Returns: 70

  31. {"1111111...1.1111...11...11.111.1.11..11", ".1...111..11..1.1.111...111.1.1.1.1..1."}

    Returns: 114

  32. {"111.111.1111111111111111.111.1.", "....111111111111.1111.1111.1..1"}

    Returns: 62

  33. {"11.1.11.11111.1.11111111.11.111.1.1111", "111..11111111111.1..111111111111111111"}

    Returns: 76

  34. {"1111.1.1111.11.11.11.1111111..111.111.1111111", "11111.11111111111111111111.111111111111.11111"}

    Returns: 90

  35. {"111111.1111.111.1111111...111", "11111111..11111.11..11111.1.1"}

    Returns: 58

  36. {"11111111111111111.11111111111111.11.111111", ".11111111111111.1.111.11.11111.111.11.1111"}

    Returns: 84

  37. {"11111111111111111111111111111111111111111", "11111111111111111111111111111111111111111"}

    Returns: 82

  38. {"1111111111111111111111111", "1111111111111111111111111"}

    Returns: 50

  39. {"11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111"}

    Returns: 100

  40. {"11111111111111111111111111111111111111", "11111111111111111111111111111111111111"}

    Returns: 76

  41. {"111111111111111111111111111111111", "111111111111111111111111111111111"}

    Returns: 66

  42. {".1.1.1.1.1.1.1.1.1", ".1.1.1.1.1.1.1.1.1" }

    Returns: 36

  43. {".1.........11.........", "..1.1......11........." }

    Returns: 128

  44. {".1.....1.1.1.1...........1........................", ".1.......1.1.1.1................................1." }

    Returns: 304

  45. {"......1.....1...1.", ".................." }

    Returns: 108

  46. {"11", "11" }

    Returns: 4

  47. {"..1", ".1." }

    Returns: 6

  48. {"1.", "1." }

    Returns: 4

  49. {".", "." }

    Returns: 2

  50. {".....", "....." }

    Returns: 34

  51. {"11111", "....." }

    Returns: 10

  52. {"..................................................", ".................................................." }

    Returns: 400

  53. {"1", "1" }

    Returns: 2

  54. {"1", "." }

    Returns: 2


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: