a_i + b_j + c_k
总和是最小的。我推断,每个数组的至少三个元素可以包含在总和中,以使其最小。 例如,如果我们有两个元素的两个元素,则很简单。
最小值,最小值
a, b
如果他们处于不同的位置,那很好。 如果没有,我们比较
a
。如果是真的,我们会采用b
a_next - a_min < b_next - b_min
。如果没有,我们会服用b_min
和a_next
a_min
我想服用b_next
(基于1),但我不能。
我将指针移至第三个指针,因为 8 1 3 => a
19 1 6 => b
18 2 1 => c
。
但是现在与a_2,b_2,c_3
a
3-1 < 6-1
移到第一个c
。结果是
(2-1 < 3-8)
,这是错误的,因为b
会少c
。
同样,当所有a_min,b_min,c_min处于同一位置时,我们也应该考虑情况。我以为我被困了。 bruteforce
(18-2 < 19-1)
可以很容易地解决三个元素的三个数组的问题,但是我觉得如果我们开始谈论f.e。大约1000个数组。我认为双重指针是解决它的关键,但无法抓住它。
这是整数线性编程问题。https://en.wikipedia.org/wiki/integer_programming
LET
a_3 + b_2 + c_1
是选择Ath Array的ITH成员的价值let
c_2 + a_1 + b_3
您想最大程度地减少x_a_i * v_a_i v_a_i for All a和i
对象to
(22 > 11)