我在为1维创建嵌套循环时遇到问题。假设我有足够数量的7米长条,我想把它切成3 x 2米,4 x 3米,1 x 4米和2 x 5米,最小的浪费。任何人都可以帮助我为此开发算法吗?
答案 0 :(得分:2)
这是subset-sum problem的优化问题,您希望找到与您的元素一起到目标的最接近(但更小)的数字。
这个问题一般是NP-Complete,但是pseudo-polynomial solution对于相对较小的整数来说效率相当高。
解决方案基于构建d
个n*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)
您要查找的目标号码是x
和f(x,n) = true
的最大数量x<=W
。
找到你选择的元素可以通过&#34;记住&#34;每个选择 - 你是否接受了它。
答案 1 :(得分:1)
这是Bin Packing Problem。从描述:
在装箱问题中,不同体积的物体必须装入有限数量的箱体或容器中,每个容器的容积V应尽可能减少所用垃圾箱的数量。
从上面链接的维基百科文章开始,找到算法。