我正在研究一种算法,该算法可以找出如何将矩形打包成更大的矩形。我知道这类似于矩形包装问题,但我的特殊问题有一些怪癖;即,我拟合的矩形仅具有限定的高度,宽度可以(并且应该)变化,使得与其他矩形共享垂直重叠的矩形将相对于它们重叠的其他矩形具有相等的宽度。
以下是我能提出的最佳形式:
鉴于R
,-inf
和由+inf
定义的区域A
之间的实数范围可能无限集(0, -inf)
,{{1 }}
对于(100, +inf)
中的每个范围r
,找到一个矩形R
,它位于区域Ar
内,其高度为A
,宽度为矩形填充尽可能多的水平空间而不与任何其他矩形重叠。
这是一个显示示例输入集和预期输出的图像:
有没有人知道最好的方法来解决这个问题?我有一个有点工作的解决方案,但它在有很多重叠范围的条件下失败。这是代码:
abs(r1 - r2)