Tesfall 5 Aufgabe 5.5

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Tesfall 5 Aufgabe 5.5
Sollte das richtige ergebnis da nich 4 anstatt 3 lauten?
da genug platz ist passen doch beide rein was nen Value von 4 macht …

was überseh ich?


Du hast was uebersehen :wink:
Es testet packCurrentItem und ,da du bei Item 2 startest, kannst du das 3 nicht verwenden.


aber wieso nicht? wir gehen doch von hinten nach vorne durch den Rucksack? heist hier 3 is schon drin und 2 muss man schaun ob platz genug is und packts auch mit rein
So wurdes mir zumindest in der Rechnerübung gesagt das wir davon ausgehen sollen das alle Items davor drin sind und wir nur prüfen ob das aktuelle mit reinpasst und wenn ja es mit reintun
der Test prüft doch aber quasi die beste Pack variante das hat doch an der Stelle nix mit der packCurrentItem zutun?! Verwirung


Der Aufruf “packCurrentItem(sizes, values, 2, 5)” bedeutet: Was ist der maximale Wert eines Rucksacks mit der Größe 5, wenn die Items 0, 1, 2 zur Verfügung stehen und das Item 2 eingepackt wird, wenn es reinpasst. Die Items hinter dem aktuellen Item können nicht in den Rucksack gepackt werden und wurden auch nicht bereits reingepackt.


Doch hat es, weil der Testfall packCurrentItem prueft und nicht packItem:

// test5 wird aufgerufen mit 
// int sizes[] = { 2, 3, 2, 2};
// int values[] = { 1, 1, 2, 2};

public static void test5(int[] sizes, int[] values) {
		if (3 != packCurrentItem(sizes, values, 2, 5))
			System.out.println("(5) FAILURE!");
	}

So jetzt sagt der Testfall: Packe Item 2 ein und berechne rekursiv das bestmoegliche Ergebnis(wenn 2 eingepackt wurde). So jetzt fangen wir beim 2.(!) Item an einzupacken, d.h. vom 3. wissen wir gar nichts, also koennen wirs auch nicht einpacken.