gpt4 book ai didi

arrays - 如何将一个集合分成两个子集,使得两个集合中的数字之和之间的差异最小?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:12:56 25 4
gpt4 key购买 nike

Given a set of numbers, divide the numbers into two subsets such that difference between the sum of numbers in two subsets is minimal.

这是我的想法,但我不确定这是否是正确的解决方案:

  1. 对数组进行排序
  2. 取前两个元素。将它们视为 2 个集合(每个集合有 1 个元素)
  3. 从数组中取出下一个元素。
  4. 决定这个元素应该放在哪个集合中(通过计算总和=>它应该是最小的)
  5. 重复

这是正确的解决方案吗?我们可以做得更好吗?

最佳答案

decision您描述的问题版本是 NP-complete问题,它被称为 partition problem .有许多 approximations在许多情况下,它提供最佳或至少足够好的解决方案。

您描述的简单算法是 Playground children 挑选团队的一种方式。这greedy algorithm如果集合中的数字具有相似的数量级,则表现非常好。

文章The Easiest Hardest Problem 美国科学家 对这个问题进行了出色的分析。你应该仔细阅读它!

关于arrays - 如何将一个集合分成两个子集,使得两个集合中的数字之和之间的差异最小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6597180/

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