Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何从两个数组中拾取元素,使总和之间的差值最小_Arrays_Algorithm_Dynamic Programming - Fatal编程技术网

Arrays 如何从两个数组中拾取元素,使总和之间的差值最小

Arrays 如何从两个数组中拾取元素,使总和之间的差值最小,arrays,algorithm,dynamic-programming,Arrays,Algorithm,Dynamic Programming,有两个数组,其中两个数组的长度相同 数组A=一组非负整数 数组B=非正整数集 我必须为每个索引I选择A[I]或B[I],并想知道abs(总和)的最小值 e、 g 例1 A={1,2,3,4},B={-1,-2,-3,-4} 然后,通过选择1、-2、-3和4,abs(sum)的最小值将为0。(-1,2,3,-4)也起作用 例2 A={1,1,1,3},B={0,0,0,-3} 然后,通过选择1,1,1和-3,abs(sum)的最小值将为0 我只能想一个简单的方法来计算每一个可能的组合,这需要指数时

有两个数组,其中两个数组的长度相同

数组A=一组非负整数

数组B=非正整数集

我必须为每个索引I选择A[I]或B[I],并想知道abs(总和)的最小值

e、 g

例1

A={1,2,3,4},B={-1,-2,-3,-4}

然后,通过选择1、-2、-3和4,abs(sum)的最小值将为0。(-1,2,3,-4)也起作用

例2

A={1,1,1,3},B={0,0,0,-3}

然后,通过选择1,1,1和-3,abs(sum)的最小值将为0


我只能想一个简单的方法来计算每一个可能的组合,这需要指数时间。有没有更好的方法来解决这个问题?

这可以在时间复杂度
O(n*num\u diff)
中完成,想象消极的一桶只是积极的一桶,我们正试图尽可能接近另一桶

JavaScript代码(a
diff
是将项目放入其中一个存储桶时产生的差异):

函数f(A,B){
设diff=newset();
差异加(A[0]);
差异相加(-B[0]);

对于(设i=1;在最坏情况下不存在数值差异2^n?,这也是exponential@Tuto我的理解是,差异的数量将取决于值的范围。我认为你需要选择另一个选项…而不是为每个i选择A[i]或B[i]。在你的问题中添加n的约束和值的范围