将一个数组分成两部分,最大化每个部分元素的乘积之和

时间:2012-08-13 07:50:44

标签: arrays algorithm dynamic-programming

我想将一个数组分成两部分。如果每个部分的元素的乘积等于p1,p2。我们的目标是p1 + p2最大化。你能用多项式复杂度来表现吗? 感谢

1 个答案:

答案 0 :(得分:0)

由于没有负面因素,只需这样做:

foreach element in array
    if element < 1
         add to list1
    else
         add to list2

最大化产品总和并以线性时间运行。然后:

product1 = 1
foreach element in list1
    product1 = product1 * element

等。请注意,这将导致空集的乘积为1 - 这是正确的。