【发布时间】:2017-06-27 10:13:16
【问题描述】:
作为输入,我有一个“地图”,它是一个多边形。它的所有边都平行于 x 轴或 y 轴(因此所有这些多边形都由它们组成的矩形描述,所有多边形的大小都是整数)。在这里您可以看到正确和错误输入的示例。
第二个输入是一组我想要适应的矩形。所有矩形都由它们的大小宽度*高度来描述(每个矩形可以有不同的整数大小)。
对于给定的输入,我想知道是否可以将所有矩形放到地图上。如果是这样,我想获得所有矩形的位置。此外,我可以对矩形的位置有更多的条件。例如,我知道地图中的两个矩形 A,B 必须由一侧连接。
是否有任何有效的算法来解决这个问题?我会说它可以转化为一些图形问题,但我不知道如何表示它。感谢您的帮助!
【问题讨论】:
-
您允许翻转或旋转矩形吗?此外,矩形是否仅由宽度*高度描述?如果是这样,我们无法确定一个矩形。还是单独提供宽度和高度?
-
你可以将其转化为一个图问题,其中每个节点是添加了一些矩形后的一个状态,这是一个有占用槽的图,以及已使用和空闲矩形的列表。例如,您可以在该图中运行 DFS,在这种情况下,您应该将已经达到和计算的状态保存在内存中,以避免多次执行它们。但是,这会很长,因为该图有太多的状态和节点(最多
2^n_slots + 2^n_rectangles个状态)。 -
您可以通过查找只能放在一个位置的矩形或查找只能由特定矩形填充的位置来减少可能性的数量。
标签: algorithm dictionary graph polygon rectangles