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

用约束将N个数组划分为K个组

韩弘壮
2023-03-14

我一直陷在这个问题中,找不到有效的解决办法。

我有N(高达1000万)说最大100个元素的数组。这些数组包含1-10000的数字。

现在我的问题是将这些数组划分为K个组,这样我就可以最小化所有数组中的重复项,即一个数组包含1,4,10,100,另一个数组包含1100。我希望他们进入同一组,因为这样可以最大限度地减少口是心非。我的问题的两个限制条件如下-

>

组中向量的数量应均匀分布。

根据大小以递减顺序对这些数组进行分组。然后找到唯一的向量唯一的哈希,并应用与约束最大匹配的贪婪算法,但贪婪似乎不太好,因为这将完全取决于我首先选择的分区。我不知道如何应用DP,因为给定向量总数的组合数量是巨大的。我不知道我应该采取什么方法。

我的算法的一些失败案例是,假设有两个向量相互排斥,但如果我与它们组成一个组,我可以将100%与第三个向量匹配,否则在一个组中仅匹配30%,并在添加到该组后使该组充满,这将增加我的重复性,因为第三个向量应该与前两个向量组成一个组向量。

共有1个答案

柯振濂
2023-03-14

简单而密集的计算和内存是每个数组迭代1000万次以匹配最大匹配数。现在,将匹配号存储在一个数组中,并使用匹配至少为60%的条件进行迭代,以类似方式查找此类数组的匹配项

 类似资料:
  • 问题内容: 想象一下,我有一个这样的JS数组: 我想要的是将该数组拆分为N个较小的数组。例如: 对于Python,我有这个: 对于JS,我可以提出的最佳解决方案是递归函数,但我不喜欢它,因为它既复杂又丑陋。这个内部函数返回一个像这样的数组[1,2,3,null,4,5,6,null,7,8],然后我必须再次循环并手动拆分它。(我的第一次尝试是返回此:[1、2、3,[4、5、6,[7、8、9]]],

  • 如何将整数数组划分为N个子集,使这些子集的和最小? 例如,数组由11个元素组成,我需要其中的6个子集。 子集:<code>{2,1,1,3},{4},}4,3},}3,2},1,2},{3}</code>最小和=7。 另一个答案是:最小和=7。 注意:在分区时,必须保持数字在原始集合中出现的顺序。

  • 所以,更正式地说,我得到了N个数字,需要把它们分成K个组,这些组中没有一个是空的。每组范围的总和需要最小。例如: N = 4,K = 2,输入为{5,3,1,1}。 一种可能的解决方案是 {5,3},{1,1}。范围的总和为 2 ((5-3) (1-1))。 另一种方法是{1,1,3}{5},它也是2((3-1)(单个数字的范围是0)。 范围始终是组中最大数字和最小数字之间的差值。 当我搜索互联网

  • 该问题给出了两个输入:数组(arr)和由数组构成子数组的次数(n)。子数组的和应该是奇数 已经很清楚,如果所有的数字都是偶数。奇数和子数组是不可能的。对于奇数和,连续的2个数字应该是奇数+偶数或者偶数+奇数。但我似乎不能把它们分成N个子数组。请帮忙解释一下逻辑。

  • 我一直在做这个练习,突然发现了一个问题。 给定一个整数数组,确定它是否可以分成两个数组,每个数组都是递增顺序。例如,3,1,5,2,4可以,但4,8,1,5,3不能。 问题就出在这里。我不明白为什么第一个数组可以,而第二个数组不能。 有一个提示: 如果我们成功地划分了数组的初始段,其中一个部分必须包含到目前为止看到的最大元素。另一部分的最大部分尽可能小显然符合我们的最大利益。因此,给定下一个元素,

  • 问题内容: 这就是您如何将列表分成大小均匀的块? 用于将数组拆分为多个块。无论如何,对于使用Numpy的巨型阵列,这样做是否更有效率? 问题答案: 尝试。 从文档中: 与相同,但如果组的长度不相等,则不会引发异常。 如果块数> len(array),您将获得嵌套在内部的空白数组,以解决此问题-如果将拆分数组保存在中,则可以通过以下方式删除空数组: 只需将其保存回去即可。