问一个问题,求算法啊~
题目是这样的:
a,b两个数组, 长度均为N,
其中0<a(i)<C, b(i)=a(i)-C, C为常数
求一个和的最小值,每次只能从一个数组取数,使和的绝对值最小。
例如:(C=1)
a: 0.5, 0.3, 0.2
b: -0.5, -0.7, -0.8
最小值为:0.5+(-0.7)+0.2 = 0。
求算法啊~
[解决办法]
Σai(m) + Σbj(n)//a中取m个,b中取n个
=Σai(m) + Σ(aj(n) - C)
=Σai(m+n) - nC
题目意思其实就是取a中若干数使和与C的整数n倍最接近
目测01规划啊
复杂度不会低
像你给的例子
0.5 + 0.3 + 0.2 = 1
所以b中任意选1个,其他的a中选 都符合要求