我想将一个数组分成两部分。如果每个部分的元素的乘积等于p1,p2。我们的目标是p1 + p2最大化。你能用多项式复杂度来表现吗? 感谢
答案 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 - 这是正确的。