编写一个计算数组中完美总和的函数?

时间:2013-02-02 16:13:55

标签: java algorithm

完美和是两个或更多个数组元素的总和,其总和等于给定数字。如果找不到则返回999.

我的方法签名是:

public static int persfectSum(int arr[], int input)

例如:

arr={2,3,5,6,8,10}
input = 10;

5+2+3= 10
2+8 = 10
So, the output is 2;

1 个答案:

答案 0 :(得分:1)

这是Subset-Sum problem 的变体 - 对子集的大小有一个额外的约束(大于1)。

问题是NP-Complete,但对于相对较小的整数,可以使用Dynamic Programming in pseudo-polynomial time来解决。

对于小型阵列而言可能更简单的替代方案是蛮力 - 只搜索所有可能的子集,并验证每个子集是否与总和相匹配。

我相信这些指导方针足以让您开始编程问题并自行解决问题(HW?)。

祝你好运。