[英]Minimizing the absolute value of the difference of the sums
我有一个包含 N 个元素的数组(N 是偶数): [2, 4, 8, ..., 2^N]
。 我需要将它拆分为2
arrays,每个都有N/2
元素,并获得此 arrays 之和之间的差的最小绝对值。
对于2, 4, 8, 16
答案是(2+16)-(4+8)=6
。 谁能向我解释解决这个问题的数学方面(没有蛮力)? 如果原始数组是range[1, N]
,解决方案是否相同?
它看起来相当微不足道,因为2^N > sum(2..2^(N-1)
。因此,为了最小化差异,你想把2^(N/2)+..._2^(N-1)
在与2^N
不同的集合中。
如果原始数组是 range[1, N],解决方案是否相同?
在数组1, 2, ... N
的情况下,答案是0
或1
,具体取决于N mod 4
。
如果N = 4k
,则最小差异为0
并且(例如)通过分区获得:
1 3 5... (2k - 1) (2k + 2) (2k + 4)... 4k 2 4 6... 2k (2k + 1) (2k + 3) (2k + 5)... (4k - 1)
如果N = 4k + 2
则最小差异为1
并且(例如)通过分区获得:
1 3 5... (2k + 1) (2k + 4) (2k + 6)... (4k + 2) 2 4 6... (2k + 2) (2k + 3) (2k + 5)... (4k + 1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.