完美和是两个或更多个数组元素的总和,其总和等于给定数字。如果找不到则返回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;
答案 0 :(得分:1)
这是Subset-Sum problem 的变体 - 对子集的大小有一个额外的约束(大于1)。
问题是NP-Complete,但对于相对较小的整数,可以使用Dynamic Programming in pseudo-polynomial time来解决。
对于小型阵列而言可能更简单的替代方案是蛮力 - 只搜索所有可能的子集,并验证每个子集是否与总和相匹配。
我相信这些指导方针足以让您开始编程问题并自行解决问题(HW?)。
祝你好运。