Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » aud » Forendiskussionen   (Übersicht)

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte ÜberarbeitungBeide Seiten, nächste Überarbeitung
pruefungen:bachelor:aud:loesungws16 [02.04.2019 12:03] Nico Hambauerpruefungen:bachelor:aud:loesungws16 [22.05.2019 12:32] SpeedyGonzalez
Zeile 86: Zeile 86:
 int b = ((int) (x/Math.pow(10,i)) % 10) + 9; int b = ((int) (x/Math.pow(10,i)) % 10) + 9;
 ... ...
 +</code>
 +
 +oder einfacher:
 +<code java>
 +...
 +bs[b + 9].addLast(x);
 </code> </code>
 ==== Aufgabe 4 Dynamische Programmierung ==== ==== Aufgabe 4 Dynamische Programmierung ====
Zeile 103: Zeile 109:
 long countDP (int n) { long countDP (int n) {
  long[] mem = new long[n+1];  long[] mem = new long[n+1];
- mem[0] = 1; + mem[0] = mem[1] = 1;
- mem[1] = 1;+
  return countDPH(mem, n);  return countDPH(mem, n);
 } }
Zeile 124: Zeile 129:
  ...  ...
  for (int k = 2; k < n+1; k++){  for (int k = 2; k < n+1; k++){
- for (int i = 0; i < n; i++){ + for (int i = 0; i < n; i++){ //Meiner Meinung nach mus hier unbedingt!!! i < k stehen, sonst rechnet man mit unbefuellten werten (buttom up beachten!) 
- mem[k] = mem[k] + mem[i] * mem[n-1-i];+ mem[k] = mem[k] + mem[i] * mem[n-1-i]; //hier auch mem[k-1-i]!
  }  }
  }  }
  ...  ...
 +}
 +</code>
 +
 +oder schöner:
 +
 +<code java>
 +private long countDPH (long[] mem, int n) {
 + if (mem[n] != 0) {
 + return mem[n];
 + }
 + for (int i = 0; i < n; i++){
 +            mem[n] += countDPH(mem, i) * countDPH(mem, n-1-i);
 + }
 + return mem[n];
 } }
 </code> </code>
Zeile 178: Zeile 197:
  quelleSeite.add(v);  quelleSeite.add(v);
  senkeSeite.remove(v);  senkeSeite.remove(v);
- df = Math.min(df, durchfluss(quelleSeite, senkeSeite));+ df = Math.min(df, durchfluss(quelleSeite, senkeSeite, senke)); 
 +                        //"Backtracking"
  senkeSeite.add(v);  senkeSeite.add(v);
  quelleSeite.remove(v);  quelleSeite.remove(v);