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 : 모든 스택을 최대 값으로 인쇄하려고합니다.알고리즘이 스택을 사용하여 정확한 합계를 갖는 서브 세트를 찾지 못한 경우 대상에 가장 가까운 값을 갖는 서브 세트를 찾습니다.
temp = stack;
에 의해 당신이 Stack
의 복사본을 만들하려는 경우
를 선언 stack'입니까? – Eran
@Eran Before temp – Elnaz91