3

假设我有一个具有以下值的数组:

array(20,40,30,15,60,50,10)

现在我想要的是我需要创建 100 个或接近 100 个。并为每组 100 个(或接近 100 个)创建单独的回合。

Case 1:
Round 1: array(60,30,10) // 100 or near to 100
Round 2: array(40,50)    // 100 or near to 100
Round 3: array(15,20)    // 100 or near to 100 or remaining

Case 2:
Round 1: array(60,40)    // 100 or near to 100
Round 2: array(50,20,30) // 100 or near to 100
Round 3: array(15,10)    // 100 or near to 100 or remaining

那么我该如何实现呢?

有什么算法可以研究吗?

4

1 回答 1

0

您正在描述装箱问题,即NP-Complete,因此没有已知的多项式解决方案可以解决它。

如果您需要精确,您可以尝试指数方法(检查所有可能性)。如果您想要“足够接近”,您可以在文献中搜索一些近似算法,或者使用 AI 领域的一些启发式搜索解决方案,例如遗传算法爬山

于 2012-10-11T08:37:44.823 回答