请注意,我不是在这里要求代码,但是我正在寻求一种方法和解释。
给定一个整数和整数N的数组,我们如何才能找到恰好相加后将等于N的四个整数。在某种情况下,我们应该找到四个这样的整数A,B,C,D,会使产品最大化
AXBXCXD
示例 N为60 ,数组为
30,20,15,12,10,6,5,4,3,2
找到四个整数的可能性很多,其中一些如下所示
可能性1
30 + 10 + 10 + 10 = 60->最终AXBXCXD = 30 * 10 * 10 * 10 = 30000
可能性2
15 + 15 + 15 + 15 = 60->最终AXBXCXD = 15 * 15 * 15 * 15 = 50625
正确答案是在所有可能的A,B,C,D整数集及其乘积中的50625,它必须是我们的最终输出。
另一个示例N是8
数组是2个整数4,2
用四个整数A,B,C,D求和的可能性仅为1,如下所示。
2 + 2 + 2 + 2 = 8最终输出2X2X2X2 = 16
如果数组没有这样的可能的四个整数组合来求和N,我们实际上必须打印-1。那是数组没有这种可能的整数的地方。
通过查看at this question,我了解了我们可以如何递归地解决问题以找出总计为N的数组子集。但是我不知道如何从上面强制执行确切的四个整数条件问题陈述。
答案 0 :(得分:1)
复杂度:O(n ^ 2 * 2 log n)。