Klausur WS 13 Dynamisches Programmieren

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.

Klausur WS 13 Dynamisches Programmieren
Hey,

ich habe da einige Fragen zur Lösung dieser Aufgabe:

In Teilaufgabe a) wird dp[][] mit

dp = new int[k+1][g.length]

initialisiert. Muss das denn nicht andersrum sein? Sodass g bzw w die Reihen und k die Spalten definieren? Eigentlich kann das ja egal sein aber dann sollte die Schleife nicht so

for(int i = 0; i < dp.length; i++) {
      dp[i][0] = 0;
   }

sondern so aussehen:

 for(int i = 0; i < dp.length; i++) {
      dp[0][i] = 0;
   }

Weil dann waere hier die Reihe fuer k=0 mit 0 initialisiert.

Als naechstes wird in b) with so berechnet:

int with = 0;
 
      if(g[i] < restk) {
         with = without + g[i];
      }

Was fuer mich kein Sinn macht, da with mit dem wert von without, also mit dem direkt oberen Wert der Tabelle, und dem Gewicht (!?) von dem Element berechnet wird.
Muss es denn nich so heissen?

int with = 0;
if (g[i] <= restk){
    with = w[i];
    if (restk - g[i] >= 0 ){
       with += dp[i-1][restk-g[i]];
   }
}

Vielen Dank


Ja, die Lösung auf der FSI-Seite ist mehr oder weniger Käse.
Das was du da schreibst, sieht ziemlich gut und richtig aus.

Daher, Aufgabe für dich: Auf die FSI-Lösungsseite gehen, am unteren Seitenende mit dem Forenaccount anmelden und die Lösung verbessern. :wink:


Ah achso da kann also jeder reinschreiben, der hier angemeldet ist…


Alles klar ich habs verbessert.

1 Like