gpt4 book ai didi

PHP 计算平衡数组

转载 作者:可可西里 更新时间:2023-10-31 23:44:27 28 4
gpt4 key购买 nike

好吧,我不确定这个标题是否那么有效,但这是我能想到的最好的。

基本上是这样的场景。

我有 11 个类别。在每个类别中,我都有项目,但一个类别可能有 1 个项目,1 个可能有 20 个。

现在我想将 11 个类别分成 5 个堆栈或列。

我希望每个堆栈包含相等数量或几乎相等数量的项目,并且任何类别项目都不能溢出堆栈。

所以给定以下数据:

Category | Items
-------------------------
Cat 1 | 10
Cat 2 | 3
Cat 3 | 7
Cat 4 | 11
Cat 5 | 5
Cat 6 | 13
Cat 7 | 19
Cat 8 | 5
Cat 9 | 3
Cat 10 | 9
Cat 10 | 15

Total = 100 Items

所以我希望元素在堆叠中均匀分布。

有 5 个堆栈,因此每个堆栈应该有 20 个项目。但是有一个问题,1 个堆栈中的项目不能溢出。那么我如何计算数据以输出如下内容:

Stack 1|Stack 2|Stack 3|Stack 4|Stack 5
-------|-------|-------|-------|-------
Cat 10 |Cat 1 |Cat 11 |Cat 6 |Cat 7
Cat 4 |Cat 3 |Cat 8 |Cat 9 |
|Cat 2 | |Cat 5 |

20 20 20 21 19

只要项目在堆栈中分布最均匀,什么类别在哪个堆栈中并不重要。

现在这个堆栈计算的结果将被缓存,因为我不需要经常计算,所以如果解决方案非常占用 CPU,仍然发布它。

谢谢:)

最佳答案

这是一个背包问题。 http://en.wikipedia.org/wiki/Knapsack_problem有很多资源是你google背包问题

一种简单的方法是尝试所有可能的组合。您计算的每个组合也将计算标准偏差。使用标准偏差保存最佳拟合组合。

关于PHP 计算平衡数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1830132/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com