我什至不确定这是否可以在多项式时间内完成。
问题:
给定两个实数数组,
A = (a[1], a[2], ..., a[n]), B = (b[1], b[2], ..., b[n]), (b[j] > 0, j = 1, 2, ..., n)
和一个数字
k
,找到 的子集A'
,A (A' = (a[i(1)], a[i(2)], ..., a[i(k)]))
其中恰好包含k
元素,使得(sum a[i(j)])/(sum b[i(j)])
最大化,其中j = 1, 2, ..., k
。
例如,如果k == 3
,{a[1], a[5], a[7]}
是结果,那么
(a[1] + a[5] + a[7])/(b[1] + b[5] + b[7])
应该大于任何其他组合。有什么线索吗?