在固定空间内分配盒子的算法

时间:2016-08-25 01:02:42

标签: algorithm layout

我有一些任意宽度的盒子。每个盒子的宽度可以受到下限和上限的约束。现在我想使用这些规则堆叠这些框以适应固定数量的空间:

  1. 不能留空空间。
  2. 每个框的宽度可以在其范围内更改。
  3. 所有盒子的宽度应尽可能均匀。
  4. 作为前提条件,假设并非所有方框都以某种方式排除解决方案。

    例如,假设我有460个可用空间和5个盒子。一个框的下限为200,一个框的下限和上限分别为20.在可用空间内分配这些框后,结果如下所示:

    Sample distribution

    给出了这个例子中的黑色数字,蓝色数字是预期的结果。我正在寻找一种产生这种结果的算法。有人能指出我正确的方向来解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

  • 在0和w之间进行二进制搜索(在您的示例中= 460)。我们称之为target-w
    • 对于每个框,如果target-w位于[w_min, w_max]内,请使用target-w作为框的选定宽度。否则,请根据需要选择w_minw_max
    • 总结所有方框的选定宽度。
    • 如果总和大于w,我们需要更小的target-w。否则,我们需要更小的target-w
    • (继续进行二分查找。)