private static Stack<Integer> temp = new Stack<Integer>();
public void populateSubset(int[] DATA, int fromIndex, int endIndex, int target) {
if (sumInStack == target) {
check = true ;
Counter ++ ;
print(stack, target);
}
for (int currentIndex = fromIndex; currentIndex < endIndex; currentIndex++) {
if (sumInStack + DATA[currentIndex] <= target) {
stack.push(DATA[currentIndex]);
sumInStack += DATA[currentIndex];
if (sumInStack >= MaxSumInStack){
temp = stack;
MaxSumInStack = sumInStack;
}
populateSubset(DATA, currentIndex + 1, endIndex, target);
sumInStack -= (Integer) stack.pop();
}
}
}
JavaのsubsetSumアルゴリズムでは、アルゴリズムは、正確な合計を持つサブセットを見つけることができません。 私はsumInsStackを更新するたびに、スタックと最大合計を見つけるための合計を格納します。しかし最終的には、各ステップで価値が得られるものの、一時スタックはnullであり、何もありません。私は何をすべきか? P.S:すべてのスタックを最大値で印刷したいと思っています。アルゴリズムがスタックを使用して正確な合計を持つサブセットを見つけなかった場合、ターゲットに最も近い値を持つサブセットを見つける
? – Eran
@Eran before temp – Elnaz91