2016-07-24 28 views
1

In SubsetSum Algorithmus in Java, ich möchte die Teilmenge mit dem nächsten Wert für das Ziel zu finden, wenn Algorithmus findet keine Untermenge, die die genaue Summe hat. Bei jeder Aktualisierung des sumInsStacks speichere ich den Stack und die Summe, um die maximale Summe zu finden. Aber schließlich ist der Temp-Stack null und nichts darin, obwohl er in jedem Schritt einen Wert erhält. was soll ich machen? S.: Ich möchte auch alle Stapel mit dem maximalen Wert drucken.Finden der Untermenge mit dem nächsten Wert zum Ziel, wenn der Algorithmus keine Untermenge findet, die die exakte Summe unter Verwendung von Stapel

+0

Wo ist 'stack' erklärt? – Eran

+0

@Eran Vor Temp – Elnaz91

Antwort

1

Wenn von

temp = stack; 

Sie eine Kopie der Stack machen wollen, das ist nicht das, was Sie tun. Sie machen nur die temp Variable beziehen sich auf die gleiche Stack wie die stack Variable, so dass Sie später leer stack, Sie auch leer temp.

Um eine Kopie zu machen, werden Sie die Elemente des ursprünglichen Stapels auf den temp Stapel explizit kopieren müssen:

temp = new Stack<Integer>(); 
temp.addAll(stack); 
+0

Danke es funktioniert;) – Elnaz91