当前位置: 首页 > 知识库问答 >
问题:

如何计算对象的最优分组?

柴凌
2023-03-14

我需要能够将一组已知大小的对象分配到3组。例如,给定一个像下面这样的有序列表,我想要找到两个除法或分离点,使三个组具有相似的和。

75, 67, 54, 40, 51, 48, 49, 47

每组的总和必须大致相等,组2和组3的总和不能超过第一组的总和超过一个规定的量(例如10)。理想情况下,第一组比其他组稍大一些。无法更改项目的顺序。每个组由原始列表的连续元素组成。每个元素都放在一个组中。

在这种情况下,预期的解决办法是:

Groups: [75, 67], [54, 40, 51], [48, 49, 47]

Sums: 142, 145, 144 

用例是预先计算(服务器端)按优先级划分的故事到列中的分配,基于它们在前端布局中的已知高度。我已经有了为内容提供足够高的代码(从比例上讲),但我正在努力寻找一种高效的方法来进行分组。没有在前端上这样做是有充分理由的,但想必通用的解决方案也可以在前端上使用。

共有1个答案

彭展
2023-03-14

如果您大致知道要分配给每个组的数量(total/3),那么为什么不遍历列表并将对象分配给组1,直到其总数达到(total/3),然后对组2执行相同的操作,然后剩余的分配给组3。最终结果可能不符合您的参数,例如,组2可能超过组1超过epsilon,在这种情况下,如果需要,您将一个或两个元素从组3交换到组2,然后如果需要,将一个或两个元素从组2交换到组1。整个过程应该以O(n)的方式运行,希望您在结束时需要交换的元素不到12个。

 类似资料:
  • 问题内容: 这是我的JSON: 如何计算其中的对象数量? 问题答案: 那是一个数组。 您可以解析它(),然后使用该属性。

  • 我在我之前的问题上再接再厉,因为还有一个进一步的问题。 我已经在Matlab中为我的数据向量拟合了一个正态分布:。现在我有一个新的数据点(例如x=0.5),我想计算它的概率。 使用cdf(PD,x)将不起作用,因为它给出了点小于或等于x(但不完全是x)的概率。使用pdf(PD,x)只给出密度,而不是概率,因此它可以大于1。 我如何计算概率?

  • 问题内容: 我知道这应该很简单,但是任何人都可以告诉我,为什么在将a 应用于子项时,以下子项框为什么会超出其父项的容器。如何计算保证金最高百分比? 子元素不应放置在200像素(父元素的高度)的50%处,即距顶部100像素的位置吗? 问题答案: 从 W3C规范: 相对于生成的框的包含块的宽度计算百分比。请注意,“ margin-top”和“ margin- bottom”也是如此。如果包含块的宽度取

  • 所以,我知道一般来说,在以下情况下应该使用 由于或其他可能导致减少原始数据集(RDD、DF)的操作,分区数量减少。对于在过滤大型数据集后更有效地运行操作很有用。 我也知道它比< code>repartition更便宜,因为它通过仅在必要时移动数据来减少洗牌。我的问题是如何定义< code>coalesce采用的参数(< code > idealpartionno )。我正在做一个项目,这个项目是另

  • 我有两对结构为rdd[String,Int]的RDD,称为rdd1和rdd2。 如果我加入前面的RDD,并在结果RDD(mapValues)的值上执行一个函数,那么所有的工作都将在一个worker中完成,而不是在集群的不同worker节点上分配不同的任务。我的意思是,期望的行为应该是在集群允许的这么多节点中并行执行作为参数传递给mapValues方法的函数。

  • 在JMeter中,我想检查从服务器接收到的JSON数组中的对象数。 例如,在一个特定的请求中,我期望一个包含5个对象的数组。 [{...},{...},{...},{...},{...}] 读完这个:使用jsonpath?计数成员后,我尝试使用以下JSON路径断言: JSON路径:$ 然而,这似乎没有正常工作。当我真的在数组中收到5个对象时,响应断言说它不匹配。 我做错了什么?或者我还能怎么做?