算法改进整理

时间:2015-07-06 06:51:24

标签: algorithm optimization

假设您有一个矩形表面和一些圆形/矩形对象(不同大小)。 我想编写一个算法来整理表面上的那些对象。 我必须在同一个表面上放置一个最大的物体。 我想我必须把最大的物体放在最小和最小的物体上。 你知道是否有一个特定的算法来优化这个? 这是一种俄罗斯方块的分辨率,但我可以选择件的顺序。

由于

2 个答案:

答案 0 :(得分:1)

由于您希望最大化要放置的对象数量,因此在大多数情况下,贪婪算法可能会运行良好:

      Sort boxes according to length(ascending order).
      Start from the smallest box:
      for every box : 
           try to place it in a already occupied row
           if not possible place it in a new row.
           if not possible to place - break; //since anything bigger than would not fit.

如果您正在考虑身高,这称为Packing Problem。 您可以查看相关的算法here

答案 1 :(得分:-1)

这称为Knapsack problem

编辑: 它实际上是背包问题的子类型:Bin Packing Problem