我有两个长度相同的整数数组v1
和v2
。我想找到v1
的最大元素子集,其总和与v2
中相应元素的总和相同。例如,让
v1 = [1 2 3 1]
v2 = [2 3 1 2]
两个数组中第2个,第3个和第4个元素的总和为6
,因此这将是我要查找的子集。
有没有办法计算这个?
提前多多感谢。 切萨雷
答案 0 :(得分:2)
计算增量,问题减少到subset sum problem。换句话说,创建第三个数组,其中每个元素是两个输入数组中相应元素之间的差异。
例如,给定输入数组v1
和v2
,创建包含差异的第三个数组v3
:
0 1 2 3 <-- index into the array
v1 = [ 1 2 3 1]
v2 = [ 2 3 1 2]
v3 = [-1 -1 2 -1]
然后v3
中添加到0
的任何子集都是一个解决方案。在此示例中,解决方案由索引集表示:{0,1,2}
,{0,2,3}
和{1,2,3}
。