【问题标题】:Split an array in two parts such that the difference of their sums is minimum [closed]将数组分成两部分,使它们的总和之差最小[关闭]
【发布时间】:2020-04-07 21:49:09
【问题描述】:

好吧,假设我有一个数组 1 4 2 3 1,我想将它拆分为 2 个子数组,以使它们总和的绝对差最小。

也就是说,对于上面的示例,2 个子数组将是 4 23 1 1,即 |6 - 5|,即 1。

这似乎是一个动态编程问题,但我想用传统的方式解决它。

我不是在寻找确切的答案,而是关于我应该如何解决这个问题的意识形态。 任何提示将不胜感激。但只是提示,因为我想以后自己解决它。

我们不关心元素的顺序,它们也可以是重复的元素。

【问题讨论】:

  • 我投票结束这个问题,因为它不包含任何代码

标签: arrays difference sub-array


【解决方案1】:

如果您只想通过任何方式找到最小值,那么蛮力方法就是找到将数组一分为二的所有方法,并找到每对中数字之和的差。然后存储最小值(和两个子数组)或最小值列表,如果程序找到新的最小值,则替换它。遍历所有可能的对,然后你就得到了你的新子数组。

根据您的编码方式,有一些方法可以改进此方法。例如,如果您有 [1,2,3] and [4,5] 对,则无需同时使用 [4,5] and [1,2,3],因为这将是同一对子数组。

我不想写一个实际的方法,因为你确实指定你想自己尝试一下

【讨论】:

    猜你喜欢
    • 2015-09-22
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    相关资源
    最近更新 更多