Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » aud » Forendiskussionen, bei Fragen bitte:
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige ÜberarbeitungLetzte ÜberarbeitungBeide Seiten, nächste Überarbeitung | ||
pruefungen:bachelor:aud:loesungws18 [17.06.2019 12:43] – gabriel2029 | pruefungen:bachelor:aud:loesungws18 [14.07.2019 13:15] – Dbadtf_385 | ||
---|---|---|---|
Zeile 56: | Zeile 56: | ||
for (int r = row - 1; r <= row + 1; r++) { | for (int r = row - 1; r <= row + 1; r++) { | ||
// Betrachte, ob das angeforderte Feld überhaupt im Quadrat liegt | // Betrachte, ob das angeforderte Feld überhaupt im Quadrat liegt | ||
- | if (r >= 0 && r < n) { | + | if (col < n - 1 && |
// Die erreichte Summe wird genau dann maximal, wenn man | // Die erreichte Summe wird genau dann maximal, wenn man | ||
// den Weg wählt, bei dem man von diesem Nachbarfeld die | // den Weg wählt, bei dem man von diesem Nachbarfeld die | ||
Zeile 73: | Zeile 73: | ||
< | < | ||
- | public | + | public int maxPathDP(int[][] a) { |
int n = a.length; | int n = a.length; | ||
int best = 0; | int best = 0; | ||
Zeile 119: | Zeile 119: | ||
=== a) === | === a) === | ||
^ Fach ^ k // | ^ Fach ^ k // | ||
- | | 0 | E => K | + | | 0 | E => U |
| 1 | | 1 | ||
| 2 |? => | | | 2 |? => | | ||
Zeile 156: | Zeile 156: | ||
private long helperNums(T v, long num) { | private long helperNums(T v, long num) { | ||
// Füge Preorder-Knoten hinzu | // Füge Preorder-Knoten hinzu | ||
- | nums.add(v, num); | + | nums.put(v, num); |
| | ||
// Nächster Knoten bekommt eine um eins höhere Nummerierung | // Nächster Knoten bekommt eine um eins höhere Nummerierung | ||
Zeile 163: | Zeile 163: | ||
// Schaue, ob in sptree schon eine Adjazenzliste angelegt wurde | // Schaue, ob in sptree schon eine Adjazenzliste angelegt wurde | ||
// (eigentlich ist das ein Set, das ist aber nicht relevent) | // (eigentlich ist das ein Set, das ist aber nicht relevent) | ||
- | if (!sptree.contains(v)) sptree.put(v, | + | if (!sptree.containsKey(v)){ |
- | | + | sptree.put(v, |
+ | | ||
// Betrachte alle Nachbarn im Graphen | // Betrachte alle Nachbarn im Graphen | ||
for (T w : graph.get(v)) { | for (T w : graph.get(v)) { | ||
// Überprüfe, | // Überprüfe, | ||
- | if (!nums.contains(w) { | + | if (!nums.containsKey(w) { |
sptree.get(v).add(w); | sptree.get(v).add(w); | ||
- | num = helperNums(v, num); // Führe rekursiv die dfs-Nummerierung aus | + | num = helperNums(w, num); // Führe rekursiv die dfs-Nummerierung aus |
} | } | ||
} | } | ||
Zeile 181: | Zeile 182: | ||
< | < | ||
private long helperLows(T v) { | private long helperLows(T v) { | ||
- | long low = nums.get(v); | + | long low = nums.get(v); |
| | ||
for (T w : sptree.get(v)) { | for (T w : sptree.get(v)) { | ||
- | long wLow = helperLows(w); | + | long wLow = helperLows(w); |
if (wLow >= nums.get(v)) { | if (wLow >= nums.get(v)) { | ||
+ | // Fall, in dem Knoten zu der Menge der Artikulationspunkte hinzugefügt werden muss | ||
aps.add(v); | aps.add(v); | ||
} | } | ||
Zeile 192: | Zeile 194: | ||
| | ||
for (T w : graph.get(v)) { | for (T w : graph.get(v)) { | ||
- | low = Math.min(low, | + | low = Math.min(low, |
} | } | ||
| | ||
Zeile 233: | Zeile 235: | ||
< | < | ||
public void sort(List< | public void sort(List< | ||
- | sort(int, 0, new BucketPool(45)); | + | sort(in, 0, new BucketPool(45)); |
} | } | ||
Zeile 239: | Zeile 241: | ||
List< | List< | ||
if (charPos < 5) { | if (charPos < 5) { | ||
- | | + | |
- | | + | Iterator< |
- | for (Iterator< | + | while (it.hasNext()) { |
String nextString = it.next(); | String nextString = it.next(); | ||
char c = nextString.charAt(charPos); | char c = nextString.charAt(charPos); | ||
Zeile 247: | Zeile 249: | ||
// Nur Elemente, die an dieser Stelle einen Char != 0 haben, | // Nur Elemente, die an dieser Stelle einen Char != 0 haben, | ||
// in andere Liste schieben | // in andere Liste schieben | ||
- | if (c >= '1' && c <= '9') { | + | if (c != '0') { |
+ | bs.get(Character.getNumericValue(c)).add(nextString); | ||
it.remove(); | it.remove(); | ||
- | buckets.get(c - ' | ||
} | } | ||
} | } | ||
Zeile 261: | Zeile 263: | ||
sort(bucket, | sort(bucket, | ||
| | ||
- | /* Zum Verstädnis: | + | /* Zum Verständnis: |
* Dadurch, dass die Strings in erster Priorität nach dem Char | * Dadurch, dass die Strings in erster Priorität nach dem Char | ||
* an Position c sortiert sind, wird die Liste korrekt sortiert: | * an Position c sortiert sind, wird die Liste korrekt sortiert: |