Java 从数组元素的组合中求和
我有一个数组,如下所示:Java 从数组元素的组合中求和,java,algorithm,sum,Java,Algorithm,Sum,我有一个数组,如下所示: int[] numberArray = {9,2,1,5,6}; 我想设计一种方法,将整数作为参数,并返回true/false,这取决于该参数是否可以通过对该数组中的任何数字求和来实现 public boolean sumCheck (int sum) { // ... } 例如,如果sum为5,sumCheck将返回true,因为numberArray[3]==5。如果sum为12,sumCheck将返回true,因为numberArray[0]+numb
int[] numberArray = {9,2,1,5,6};
我想设计一种方法,将整数作为参数,并返回true/false,这取决于该参数是否可以通过对该数组中的任何数字求和来实现
public boolean sumCheck (int sum) {
// ...
}
例如,如果sum
为5
,sumCheck
将返回true,因为numberArray[3]==5
。如果sum
为12
,sumCheck
将返回true,因为numberArray[0]+numberArray[1]+numberArray[2]==12
。但是,如果sum
是4
,则它不会返回true,因为numberArray
元素的组合不能求和到这个数字。这就是问题,它是NP完全的。但是,您可以在Wiki页面上找到伪多项式时间算法(背包的一种变体,使用DP)。这就是问题所在,它是NP完全的。但是,您可以在Wiki页面上找到伪多项式时间算法(背包的一种变体,使用DP)。Check以一种很好的方式解释了您的问题。首先是蛮力,然后是dp解决方案。检查以一种很好的方式解释了您的问题。首先是蛮力,然后是dp解决方案