Statistics

Problem Statement for "Tile"

Problem Statement

Given a set of tile dimensions, return the number of different combinations of the tiles whose areas add up to 64. The calculation for the area of a tile is:

area = width * height

For example, given 16 2x2 tiles, the only possibility is to use all 16 of the tiles, so there is only 1 combination. Given 17 2x2 tiles, any one of the 17 can be left out, so there are 17 combinations.

The set will be represented as a String[], with each element formatted as (quotes added for clarity):

"#x#", where '#' represents a dimension of the tile (an integer).

If there are more than 100,000 combinations, return -1.

Definition

Class:
Tile
Method:
composite
Parameters:
String[]
Returns:
int
Method signature:
int composite(String[] tiles)
(be sure your method is public)

Notes

  • If there are more than 100,000 combinations, return -1.
  • Each tile may only be used once.

Constraints

  • tiles will contain between 1 and 50 elements, inclusive.
  • each element will be formatted as "#x#" (quotes added for clarity), where each '#' represents an integer between 1 and 4, inclusive, and a single lowercase 'x' is between them.

Examples

  1. {"2x2","2x2","2x2","2x2", "2x2","2x2","2x2","2x2", "2x2","2x2","2x2","2x2", "2x2","2x2","2x2","2x2"}

    Returns: 1

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

    Returns: 17

  3. {"2x2","2x2","2x2","2x2", "2x2","2x2","2x2","2x2", "2x2","2x2","2x2","2x2", "2x2","2x2","2x2","2x2", "2x2","2x2"}

    Returns: 153

    Since there are 18 different tiles and 16 must be chosen, there 153 different combinations.

  4. {"1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1"}

    Returns: 0

    There is no way to get an area of 64.

  5. {"4x4","4x3","4x2","4x1", "3x4","2x2","2x2","1x4", "1x3","4x2","4x3","4x4", "3x3","3x3","3x3","3x2", "3x4","2x4","2x3","2x1", "1x1","1x1"}

    Returns: 53725

  6. {"4x4","4x3","4x2","4x1", "3x4","2x2","2x2","1x4", "1x3","4x2","4x3","4x4", "3x3","3x3","3x3","3x2", "3x4","2x4","2x3","2x1", "1x1","1x1","4x4","4x4", "4x4","4x4","1x1","1x1"}

    Returns: -1

    There are more than 100,000 combinations.

  7. {"3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3","3x3"}

    Returns: 0

  8. {"4x2","4x2","2x2","2x2","4x1","4x1","2x2","2x2","2x4","2x1","2x1","1x4","1x2","1x4","4x1","1x4","4x2","4x4","2x2"}

    Returns: 17731

  9. {"2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2"}

    Returns: -1

  10. {"3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","1x1","1x1","1x1","1x1"}

    Returns: -1

  11. {"3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","3x4","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2","2x2"}

    Returns: -1

  12. {"1x1","1x2","1x3","1x4","2x1","2x2","2x3","2x4","3x1","3x2","3x3","3x4","4x1","4x2","4x3","4x4"}

    Returns: 1153

  13. {"1x1","1x2","1x3","1x4","2x1","2x2","2x3","2x4","3x1","3x2","3x3","3x4","4x1","4x2","4x3","4x4","1x1","2x2","3x3","4x4","1x1"}

    Returns: 45534

  14. {"4x4","4x4","4x4","4x4","4x4","4x4","4x4","4x4","4x4","4x4"}

    Returns: 210

  15. {"1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1","1x1"}

    Returns: 0

  16. {"1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2"}

    Returns: -1

  17. {"1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2","1x2"}

    Returns: -1

  18. { "1x1" }

    Returns: 0

  19. { "4x4", "4x3", "4x2", "4x1", "3x4", "2x2", "2x2", "1x4", "1x3", "4x2", "4x3", "4x4", "3x3", "3x3", "3x3", "3x2", "3x4", "2x4", "2x3", "2x1", "1x1", "1x1" }

    Returns: 53725

  20. { "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3", "1x3" }

    Returns: 0

  21. { "3x3", "3x3", "3x3", "2x2", "4x4", "4x4", "1x1" }

    Returns: 1

  22. { "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "4x4", "4x4", "4x4", "4x4", "3x3", "3x3", "2x3", "3x2", "1x2" }

    Returns: -1

  23. { "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1" }

    Returns: 0

  24. { "4x4", "4x4", "4x4", "4x4", "4x4", "2x2", "2x2", "2x2", "2x2" }

    Returns: 15

  25. { "2x2", "2x2", "2x2", "2x2", "2x2", "2x2", "2x2", "2x2", "2x2", "2x2", "2x2", "2x2", "2x2", "2x2", "2x2", "2x2", "2x2", "2x2", "2x2", "2x2" }

    Returns: 4845

  26. { "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1", "1x1" }

    Returns: 0

  27. { "4x4", "4x3", "4x2", "4x1", "3x4", "2x2", "2x2", "1x4", "1x3", "4x2", "4x3", "4x4", "3x3", "3x3", "3x3", "3x2", "3x4", "2x4", "2x3", "2x1", "1x1", "1x1", "4x4", "4x4", "4x4", "4x4", "1x1", "1x1" }

    Returns: -1

  28. { "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3", "3x3" }

    Returns: 0

  29. { "4x4", "4x3", "4x2", "4x1", "3x4", "2x2", "2x2", "1x4", "1x3", "4x2", "4x3", "4x4", "3x3", "3x3", "3x3", "3x2", "3x4", "2x4", "2x3", "2x1", "4x2", "2x3" }

    Returns: 40147

  30. { "4x4", "4x3", "4x2", "4x1", "3x4", "2x2", "2x2", "1x4", "1x3", "4x2", "4x3", "4x4", "3x3", "3x3", "3x3", "3x2", "3x4", "2x4", "2x3", "2x1", "1x1", "1x1", "4x4", "4x4", "4x4", "4x4", "1x1", "1x1", "2x3", "4x1", "1x2", "1x3", "2x4", "3x1", "2x4", "3x4", "4x4", "1x1", "2x2", "3x3", "4x4", "1x4", "1x3", "1x2", "1x1", "2x2", "2x3", "2x4", "3x3", "3x1" }

    Returns: -1

  31. { "1x1", "2x2", "1x1", "2x2", "1x1", "2x2", "1x1", "2x2", "1x1", "2x2", "1x1", "2x2", "1x1", "2x2", "1x1", "1x1", "1x1", "2x2", "1x1", "2x2", "1x1", "2x2", "1x1", "2x2", "1x1", "2x2", "1x1", "2x2", "1x1", "1x1", "1x1", "2x2", "1x1", "2x2", "1x1", "2x2", "1x1", "2x2", "1x1", "2x2", "1x1", "2x2", "1x1", "1x1", "1x1", "2x2", "3x3", "2x2", "1x1" }

    Returns: -1


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: