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.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
pruefungen:bachelor:aud:loesungss18 [01.04.2019 11:32] – LasagneAlForno | pruefungen:bachelor:aud:loesungss18 [03.08.2019 12:18] (aktuell) – LasagneAlForno | ||
---|---|---|---|
Zeile 7: | Zeile 7: | ||
==== Aufgabe 1 ==== | ==== Aufgabe 1 ==== | ||
- | * 1.a) | + | * a) |
<code java> | <code java> | ||
long aDP(int n) { | long aDP(int n) { | ||
Zeile 18: | Zeile 18: | ||
long aDP(int n, long[] a, long[] b) { | long aDP(int n, long[] a, long[] b) { | ||
- | | + | if(n ==0) return |
- | | + | if(n == 1) return |
- | } | + | if(a[n] == -1){ |
- | long resultA; | + | a[n]=aDP(n-2, a, b) + 2*bDB(n-1, a, b); |
- | | + | } |
- | resultA = 1; | + | return a[n]; |
- | } else if(n == 1) { | + | |
- | | + | |
- | } else { | + | |
- | resultA | + | |
- | } | + | |
- | a[n] = resultA; | + | |
- | | + | |
} | } | ||
long bDP(int n, long[] a, long[] b) { | long bDP(int n, long[] a, long[] b) { | ||
- | | + | if(n ==0) return |
- | | + | if(n ==1) return 1; |
- | } | + | if(b[n] == -1){ |
- | long resultB; | + | b[n]=aDP(n-1, a, b) + bDB(n-2, a, b); |
- | | + | } |
- | | + | return b[n]; |
- | }else { | + | |
- | resultB | + | |
- | } | + | |
- | b[n] = resultB; | + | |
- | | + | |
} | } | ||
</ | </ | ||
- | * 1.b) | + | * b) |
<code java> | <code java> | ||
long aIter(int n) { | long aIter(int n) { | ||
Zeile 56: | Zeile 44: | ||
a[1] = 0; | a[1] = 0; | ||
b[1] = 1; | b[1] = 1; | ||
+ | | ||
for (int i = 2; i <= n; i++){ | for (int i = 2; i <= n; i++){ | ||
a[i] = a[i-2] + 2*b[i-1]; | a[i] = a[i-2] + 2*b[i-1]; | ||
Zeile 64: | Zeile 53: | ||
</ | </ | ||
- | * 2.a) | + | ==== Aufgabe |
+ | * a) | ||
^ A ^ B ^ C ^ D ^ E ^ Prio-Queue | ^ A ^ B ^ C ^ D ^ E ^ Prio-Queue | ||
Zeile 75: | Zeile 65: | ||
| 0 | 10 | 5 | 9 | 8 | [ ] | | | 0 | 10 | 5 | 9 | 8 | [ ] | | ||
- | * 2.b) A -> C -> E -> B | + | * b) A -> C -> E -> B |
- | * 2.c) | + | |
+ | * c) | ||
^ uj ^ vi ^ wk ^ γj,k alt ^ γj, | ^ uj ^ vi ^ wk ^ γj,k alt ^ γj, | ||
Zeile 90: | Zeile 81: | ||
|C |E |D|5|4|4| | |C |E |D|5|4|4| | ||
- | | + | ==== Aufgabe |
<code java> | <code java> | ||
class Schuld { | class Schuld { | ||
Zeile 99: | Zeile 91: | ||
} | } | ||
</ | </ | ||
- | a) | + | *a) |
<code java> | <code java> | ||
HashMap< | HashMap< | ||
Zeile 109: | Zeile 101: | ||
dAlt = dAlt == null ? 0L : dAlt; | dAlt = dAlt == null ? 0L : dAlt; | ||
ds.put(s.s, dAlt - s.b); | ds.put(s.s, dAlt - s.b); | ||
- | // | + | |
+ | |||
// eingehender Betrag (zu Geldgeber): | // eingehender Betrag (zu Geldgeber): | ||
dAlt = ds.get(s.g); | dAlt = ds.get(s.g); | ||
- | dAlt = dAlt == null ? 0L | + | dAlt = dAlt == null ? 0L : dAlt; |
- | | + | |
ds.put(s.g, dAlt + s.b); | ds.put(s.g, dAlt + s.b); | ||
- | //muss es nicht heissen dAlt - s.b? | + | |
- | // Z.B. ist A Geldgeber ggü. B und D, gibt also 60. Ist ggü. C Schuldner in Höhe von 10. | + | // |
- | //Laut der Angabe ist ∆A: -50, mit den hier Im Lösungsvorschlag angegebenen Vorzeichen würde sich für | + | |
- | // ∆A aber +50 ergeben wenn ich mich nicht täusche. | + | |
- | // | + | |
} | } | ||
return ds; | return ds; | ||
Zeile 125: | Zeile 114: | ||
</ | </ | ||
- | b) | + | *b) |
<code java> | <code java> | ||
List< | List< | ||
Zeile 155: | Zeile 144: | ||
// begleiche Schuld von S nach G: | // begleiche Schuld von S nach G: | ||
long dmin = Math.min(Math.abs(dS), | long dmin = Math.min(Math.abs(dS), | ||
- | if (deltas.size() == 2){ | ||
Schuld result = new Schuld (S, dMin, G); | Schuld result = new Schuld (S, dMin, G); | ||
ergebnis.add(result); | ergebnis.add(result); | ||
- | } | ||
// aktualisiere deltas von S bzw. G: | // aktualisiere deltas von S bzw. G: | ||
if (dmin == Math.abs(dS)) { | if (dmin == Math.abs(dS)) { | ||
- | | + | deltas.put(G, dG - dmin); |
- | dNeuG += dS; // hier habe ich: dNeuG -= dmin; | + | |
- | deltas.put(G, | + | |
deltas.remove(S); | deltas.remove(S); | ||
+ | // Alternative: | ||
+ | // dNeuG += dS; oder dNeuG -= dmin; | ||
+ | // deltas.put(G, | ||
} else { | } else { | ||
- | | + | deltas.put(S, dS + dmin); |
- | dNeuS += dG; // hier habe ich: dNeuS += dmin; | + | |
- | deltas.put(S, | + | |
deltas.remove(G); | deltas.remove(G); | ||
+ | // Alternative: | ||
+ | // dNeuS += dG; oder dNeuS += dmin; | ||
+ | // | ||
} | } | ||
} | } | ||
Zeile 175: | Zeile 164: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | |||
+ | ==== Aufgabe 4 ==== | ||
<code java> | <code java> | ||
- | * 4.a) | + | * a) |
| | ||
| | ||
| | ||
- | * 4.b) | + | * b) |
| | ||
contains(s, | contains(s, | ||
- | * 4.c) | + | * c) |
| | ||
- | * 4.d) | + | * d) |
| | ||
eval (f,s) sonst | eval (f,s) sonst | ||
- | * 4.e) | + | * e) |
| | ||
- | * 4.f) | + | * f) |
| | ||
^ isBDD(f) | ^ isBDD(f) | ||
Zeile 198: | Zeile 190: | ||
</ | </ | ||
- | * 5. | + | ==== Aufgabe |
* a) | * a) | ||
<code java> | <code java> | ||
Zeile 247: | Zeile 240: | ||
c--; | c--; | ||
} // collect values of current horizontal str8t in sh: | } // collect values of current horizontal str8t in sh: | ||
- | while(++c < 9 && blk[row][c]) { | + | while(++c < 9 && |
sh.add(num[row][c]); | sh.add(num[row][c]); | ||
} | } | ||
Zeile 253: | Zeile 246: | ||
r--; | r--; | ||
} // collect values of current vertical str8t in sv: | } // collect values of current vertical str8t in sv: | ||
- | while(++r < 9 && blk[r][col]) { | + | while(++r < 9 && |
sv.add(num[r][col]); | sv.add(num[r][col]); | ||
} | } | ||
Zeile 296: | Zeile 289: | ||
</ | </ | ||
- | * 6. | + | ==== Aufgabe |
* a) 3,4 richtig | * a) 3,4 richtig | ||
Zeile 306: | Zeile 300: | ||
* d) 1,2 richtig | * d) 1,2 richtig | ||
- | * e) 2 ,3 sind richtig, wobei bei 3 javac -ea fuer " | + | * e) 2 ,3, 4 sind richtig, wobei bei 3 javac -ea fuer " |
| |