我正在编写一个在木材场中使用的应用程序。给定许多板或梁长度,目标是计算所需的板数量,同时最大限度地减少浪费。例如,一个特定维度的购物清单可能如下:
3x 2.9 米
5x 1.6 米
21x 0.9 米
在木材场,人们会检查可用的木板长度并将其输入到应用程序中。假设这个尺寸有 4.8 米的长度。
一个简单的方法是尝试以递减的长度安装剩余的板:
2.9 + 2.9 = 5.8 所以不适合 4.8 米的板
2.9 + 1.6 = 4.5 所以没关系。
没有长度小于剩余的 0.3 米,所以这个板是“满的”。我们将再安装两个这种类型,然后我们有以下长度可供选择:
2x 1.6 米
21x 0.9 米
好的,所以这个算法工作得相当好。但是,如果我们不拟合 2.9 + 1.6,而是拟合 2.9 + 0.9 + 0.9 = 4.7 会怎样。然后,我们将每块板产生 0.1 米的废物,而不是 0.3 米。
枚举所有可能组合的一个问题是,每个长度可能在一块板上出现不止一次,并且一块板中适合的长度的数量也会有所不同。有没有一种我可以使用的已知算法来最大程度地减少所有电路板的总浪费?
此外,如果木材场有两个或更多长度可用怎么办?例如 5.4、4.8 和 3.6 米?这肯定会使事情复杂化。可以为每个可用长度运行选定的算法,并选择浪费最少的长度。但最优雅的解决方案是允许混合可用长度,因此最佳答案可能是 1x 5.4、3x 4.8、6x 3.6。但对于初学者来说,我很乐意将答案限制为一个长度。