Algorithm 棒切割变体

Algorithm 棒切割变体,algorithm,optimization,recursion,big-o,brute-force,Algorithm,Optimization,Recursion,Big O,Brute Force,我有以下算法问题: 给定一份客户订单,描述不同长度的多个木材,精度为小数点后2位。 例如:2*1,50;2*0.50(需要4块木材,2块长度为1.50米,两块长度为0.50米) 库存木材数量不限,但长度固定为2、3、4和5米。 客户订单中的木材需要从库存梁中切割。作为理想化,切口本身的厚度为0。 客户订单中的任何光束长度>5,00米都是不可能的。 目标是最大限度地减少完成客户订单后造成的木材浪费。当存在多个具有最小浪费的解决方案时,具有最小切割量的解决方案是最佳解决方案。 在上面提到的客户订单示

我有以下算法问题:

给定一份客户订单,描述不同长度的多个木材,精度为小数点后2位。 例如:2*1,50;2*0.50(需要4块木材,2块长度为1.50米,两块长度为0.50米)

库存木材数量不限,但长度固定为2、3、4和5米。 客户订单中的木材需要从库存梁中切割。作为理想化,切口本身的厚度为0。
客户订单中的任何光束长度>5,00米都是不可能的。

目标是最大限度地减少完成客户订单后造成的木材浪费。当存在多个具有最小浪费的解决方案时,具有最小切割量的解决方案是最佳解决方案。

在上面提到的客户订单示例中,将从库存中取出两块2,00米的木材,并将它们分别切成0,5米和1,5米的一块。 因此,该算法将产生2次切割的浪费=0

Example 1:
Customer order: 2 * 1,50 ; 2 * 0,50  
Output: 
Total waste: 0  
Total cuts: 2  
2,00 --> 1,50 ; 0,50 waste 0  
2,00 --> 1,50 ; 0,50 waste 0

Example 2:  
Customer order: 2 * 2,48 ; 1 * 2,68 ;  2 * 3,12 ; 1 * 1,32; 2 * 1,33 ; 1 * 1,34  
Output:     
Total waste: 1,80  
Total cuts: 7  
4,00 --> 1,33 ; 1,33 ; 1,34 waste 0  
4,00 --> 2,68 ; 1,32 waste 0  
4,00 --> 3,12 ;      waste 0,88  
4,00 --> 3,12 ;      waste 0,88  
5,00 --> 2,48 ; 2,48 waste 0,04 
在客户订单中给定数量的梁上,蛮力方法的性能非常差

有谁能想出一个好的算法方法吗?
关于big-o复杂性有什么想法吗?

听起来与类似。这很相似,但在我的问题中,客户订单中的木材没有固定长度。换句话说,客户订单中可能需要10根横梁,每根横梁的长度不同。是否只有尺寸为2、3、4、5的木材可用?如果客户需要尺寸为10的木材,客户订单中任何横梁长度>5,00米都是不可能的。总订单的最大数量是多少??