你必須擁有一組正數和負數的數組,打印所有的子集和等於0。從正負數集合中找出所有可能的子集總和等於0?
我能想到的辦法,我可以使凸輪陣列givcen所有powersets和檢查,如果他們總和是0。不喜歡優化的解決方案llok到 我。
看了網上看了一下類似的問題,看起來它可以用下面的程序來動態編程來解決找到有沒有組合存在 做和11就是一個例子嗎?
public boolean subsetSum(int input[], int total) {
boolean T[][] = new boolean[input.length + 1][total + 1];
for (int i = 0; i <= input.length; i++) {
T[i][0] = true;
}
for (int i = 1; i <= input.length; i++) {
for (int j = 1; j <= total; j++) {
if (j - input[i - 1] >= 0) {
T[i][j] = T[i - 1][j] || T[i - 1][j - input[i - 1]];
} else {
T[i][j] = T[i-1][j];
}
}
}
return T[input.length][total];
}
public static void main(String args[]) {
TestDynamic ss = new TestDynamic();
int arr1[] = {2, 3, 7, 8};
System.out.print(ss.subsetSum(arr1, 11));
}
,但我不知道如何上面PROGRAME擴展到
1)包括負數
2)找到的元素組合whick使之和爲零(上述程序只是認定其是否可能使給定的總和,但不 找到哪一組數字使其爲零)
http://stackoverflow.com/questions/15532957/to-find-a-subset-from-a-set-whose-sum-equals-to-zero –
@ErwinRooijakkers解決方案在您提供的鏈接不完整並且是非常高的水平。我無法理解它至少 – emilly
試試這個:http://codereview.stackexchange.com/questions/36214/find-all-subsets-of-an-int-array-whose-sums-equal-a-given-target )。 –