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
1
A
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
Wo ist 'stack' erklärt? – Eran
@Eran Vor Temp – Elnaz91