从数组元素的组合中查找总和

时间:2015-05-29 03:48:23

标签: java algorithm sum

我有一个如下所示的数组:

int[] numberArray = {9,2,1,5,6};

我想设计一个方法,它将整数作为参数并返回true / false,这取决于是否可以通过对该数组中的任何数字求和来实现该参数。

public boolean sumCheck (int sum) {
    // ...
}

例如,如果sum5sumCheck将从numberArray[3] == 5返回true。如果sum12sumCheck将从numberArray[0]+numberArray[1]+numberArray[2] == 12开始返回true。但是,如果sum4,则不会返回true,因为numberArray元素的组合不能与此数字相加。

2 个答案:

答案 0 :(得分:4)

这是subset sum问题,它是NP完全的。但是,您可以在Wiki页面上找到伪多项式时间算法(背包的变体,使用DP)。

答案 1 :(得分:1)

检查http://www.geeksforgeeks.org/dynamic-programming-subset-sum-problem/..it以一种很好的方式解释您的问题。第一个蛮力然后是dp解决方案就在那里。