我有以下问题需要解决。与输入一样,我有2个十进制数组。两者的要素总和是相等的。 Actuall问题是通过部分和将值从一个数组赋值给第二个数组 - 如果一个数组中的某个元素是第二个数组中任意数量元素的总和 - 它们应该相互分配。
的Sample1:
Array1:25.0,25.0,50.0,50.0 Array2:50.0,100.0
预期结果:50.0是25.0和25.0的总和,100.0是50.0和50.0的总和
(0-> 0,1; 1-> 2,3)
样品2:
Array1:20.0,70.0,80.0,130.0 Array2:100.0,200.0
预期结果: 100 = 20 + 80,200 = 70 + 130(0-> 0,2; 1-> 1,3)
想法是返回指定的数组元素索引,并尽可能少地返回。
答案 0 :(得分:2)
不幸的是,这是NP完全的,这意味着您必须检查所有可能的组合。
但是,如果您的问题只有少量的部分金额(例如您的示例),那么就会蛮力。
Moron是正确的,并非所有NP完全问题都需要检查所有可能的组合 不过我相信subset sum is one that does。