algorithm - 如何解决这个拼图难题?

标签 algorithm tiling

[SRM 209, Div I 的 1000 分问题]

在某个阶段,问题会简化为以下内容:

给定三个方形单元的 block ,如下所示,可以以任何方式旋转,有多少种方法可以填充给定大小的矩形 block 。

| x | x |
| x |

例如,对于一个 3x4 的 block ,有 4 种排列这些 block 的方法。我正在寻找一种方法来解决这个问题,而不是实际的解决方案。我如何去寻找方法的数量。它可能发生的方式有很多种,而且我也没有看到 DP 方法的重叠子问题。

欢迎任何见解。

最佳答案

无一异常(exception),每次用 L 形瓷砖拼贴 pxq 空间 block 时,都会减少为由成对的 L 形瓷砖组成的 2x3 block 拼贴。 IE。瓷砖的形式是:

        xx      xx
        xy  or  yx  to form a vertical 2x3 block or
        yy      yy

        xyy       xxy
        xxy  or   xyy  to form a horizontal 3,2 block.

因此,您已经可以将问题简化为“ Parquet ”——由 2x3 和 3x2 矩形拼接而成的矩形。当然,除非您正在铺设不规则的非矩形区域 - 在这种情况下,您必须单独考虑 L 形瓷砖。

关于algorithm - 如何解决这个拼图难题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12757602/

相关文章:

arrays - 查找数组中的多数元素

algorithm - SPOJ "Card Trick": unable to understand how to apply binary index tree

algorithm - 平铺算法

algorithm - 检测变形线

algorithm - 如何线性排列图形而不重叠?

python - 在 Python 中创建四个列表的所有可能组合的最有效方法?

java - 在 OpenGL 中在 3D 形状上平铺子纹理

algorithm - 计算具有相互依赖关系的递归算法的复杂度

algorithm - 泛化多米诺拼贴的算法?

html - 简单背景: tiling an image in a div