In Zeile 3 (Artikel 2) und Spalte 5 (Rucksack kapazität von 4), können wir wählen, entweder enthalten artikel 2 (die wiegt 4 einheiten) oder nicht. Wenn wir uns dafür entscheiden, es nicht einzuschließen, ist der maximale Wert, den wir erhalten können, derselbe, als hätten wir nur Punkt 1 zur Auswahl (der in der obigen Zeile zu finden ist, dh 0)., Wenn wir Artikel 2 einschließen möchten, ist der maximale Wert, den wir mit Artikel 2 erhalten können, der Wert von Artikel 2 (40) + der maximale Wert, den wir mit der verbleibenden Kapazität erhalten können (was 0 ist, weil der Rucksack bereits vollständig voll ist).
In Zeile 3 (Punkt 2) und Spalte 10 (Rucksackkapazität von 9) können wir erneut auswählen, ob Artikel 2 enthalten sein soll oder nicht. Wenn wir dies nicht tun, ist der Maximalwert, den wir erhalten können, derselbe wie in der obigen Zeile in derselben Spalte, dh 10 (indem nur Punkt 1 mit dem Wert 10 einbezogen wird). Wenn wir Artikel 2 einschließen, haben wir eine verbleibende Rucksackkapazität von 9-4 = 5., Den Maximalwert, der mit einer Kapazität von 5 erreicht werden kann, können wir anhand der obigen Zeile in Spalte 5 ermitteln. Somit ist der maximale Wert, den wir durch Einbeziehung von Artikel 2 erhalten können, 40 (der Wert von Artikel 2) + 10 = 50.
Wir wählen den größeren von 50 gegen 10, und so ist der maximale Wert, den wir mit den Artikeln 1 und 2 mit einer Rucksackkapazität von 9 erhalten können, 50.,
Der Algorithmus kann in Java folgendermaßen ausgedrückt werden:
Schritt 4 (endgültige Lösung):
Sobald die Tabelle ausgefüllt wurde, befindet sich die endgültige Lösung in der letzten Zeile in der letzten Spalte, die den Maximalwert darstellt, der mit allen Elementen und der vollen Kapazität der knapsack.
return mat;
Arbeitscode:
Hinweis: Hier habe ich die endgültige Antwort gedruckt, anstatt sie zurückzugeben, da alles unter public static void main.,