1维嵌套算法

时间:2014-05-11 13:26:59

标签: algorithm nested-loops

我在为1维创建嵌套循环时遇到问题。假设我有足够数量的7米长条,我想把它切成3 x 2米,4 x 3米,1 x 4米和2 x 5米,最小的浪费。任何人都可以帮助我为此开发算法吗?

2 个答案:

答案 0 :(得分:2)

这是subset-sum problem的优化问题,您希望找到与您的元素一起到目标的最接近(但更小)的数字。

这个问题一般是NP-Complete,但是pseudo-polynomial solution对于相对较小的整数来说效率相当高。

解决方案基于构建dn*W维度的表格n是元素数量,W是目标数量“,并使用以下内容递归公式:

f(0,i) = true
f(x,0) = false  for all x != 0
f(x,i) = f(x-arr[i],i-1) OR f(x,i-1)

您要查找的目标号码是xf(x,n) = true的最大数量x<=W
找到你选择的元素可以通过&#34;记住&#34;每个选择 - 你是否接受了它。

答案 1 :(得分:1)

这是Bin Packing Problem。从描述:

  

在装箱问题中,不同体积的物体必须装入有限数量的箱体或容器中,每个容器的容积V应尽可能减少所用垃圾箱的数量。

从上面链接的维基百科文章开始,找到算法。