【发布时间】:2017-04-03 05:23:45
【问题描述】:
我有一个用整数填充的数组(排序或未排序,以更容易的为准,但在这里我会对其进行排序):
10,20,20,30,40
我试图做的是得到这些数字的两个最小的总和。在这种情况下,应该是60,因为:
10+20+30 = 60 和 20+40 = 60。我试图做的是当我对数组进行排序时,拆分第一个向左,第二个向右,向左,向右的数字......但我没有得到最小的总和。在这种情况下,使用我的算法,我会得到以下总和:
10+20+40 = 70 和20+30 = 50 这不是很有效。
您知道,我正在研究一种时间管理算法,因此我希望获得尽可能小的最佳时间。
【问题讨论】:
-
查找“背包问题”或“背包问题”。
-
为什么不把 10 + 20 = 30 作为最小的和?
-
@Jean-FrançoisFabre 谢谢伙计,它有效!
10+20 = 30是最小的总和,但其余的总和更大,这是我们不想要的。例如,你和你的朋友送披萨,你们想尽快一起去吃午饭。你会不会只给他30而你拿走其余的,在这种情况下是90? -
(问题可能被改写为将一组整数分成两部分,总和尽可能接近。)
标签: c arrays algorithm sorting