Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » aud » Lösungsversuch Miniklausur WS 2019/20 (Übersicht)
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:loesung-miniklausur-19 [17.02.2020 17:01] – kat04 | pruefungen:bachelor:aud:loesung-miniklausur-19 [11.06.2020 12:27] – SeBi | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
===== Lösungsversuch Miniklausur WS 2019/20 ===== | ===== Lösungsversuch Miniklausur WS 2019/20 ===== | ||
+ | (sehr unsicher, kann aber als Diskussionsgrundlage genutzt werden) | ||
+ | |||
+ | ==== Aufgabe 1 (Wissensfragen) ==== | ||
+ | 1) 1&2 | ||
+ | |||
+ | 2) 2&3 | ||
+ | |||
+ | 3) 3&4 | ||
+ | |||
+ | |||
+ | ==== Aufgabe 2 (ADT) ==== | ||
+ | |||
+ | **a)** | ||
+ | |||
+ | erweitern(p, | ||
+ | |||
+ | erweitern(p, | ||
+ | |||
+ | |||
+ | **b)** | ||
+ | |||
+ | alle(Leer) = Leer | ||
+ | |||
+ | alle(Cons(k, | ||
+ | |||
+ | alle(Cons(k, | ||
+ | |||
+ | **c)** | ||
+ | |||
+ | uHelfer(Leer, | ||
+ | |||
+ | uHelfer(Cons(k, | ||
+ | |||
+ | |||
==== Aufgabe 3 (Backtracking) ==== | ==== Aufgabe 3 (Backtracking) ==== | ||
- | (sehr unsicher, kann aber als Diskussionsgrundlage genutzt werden) | + | |
**a)** | **a)** | ||
Zeile 75: | Zeile 109: | ||
</ | </ | ||
- | ==== Aufgabe 2 (ADT) ==== | ||
+ | |||
+ | ==== Aufgabe 4 (Memoization und DP) ==== | ||
**a)** | **a)** | ||
+ | <code java> | ||
+ | long facMem(int k, long[] fs) { | ||
+ | if (k <= 0) | ||
+ | return 1; | ||
+ | if (fs[k] > 0) | ||
+ | return fs[k]; | ||
+ | return k * facMem(k - 1, fs); | ||
+ | } | ||
- | erweitern(p, Leer) = Leer | + | long multiFacMem(int k, int... ks) { |
- | + | long div = 1; | |
- | erweitern(p, Cons(Cons(k, | + | long[] arr = new long[k + 1]; |
+ | for (int ki : ks) | ||
+ | div *= facMem(ki, arr); | ||
+ | return facMem(k, arr) / div; | ||
+ | } | ||
+ | </ | ||
**b)** | **b)** | ||
- | + | <code java> | |
- | alle(Leer) = Leer | + | List< |
- | + | List< | |
- | alle(Cons(k, leer)) = Cons(Cons(k,Leer),Leer) | + | if (n <= 1) { |
- | + | List< | |
- | alle(Cons(k, l)) = erweitern(k,alle(l)) | + | last.add(k); |
- | + | all.add(last); | |
- | **c)** | + | } else { |
- | + | for (int ki = k; ki >= 0; ki--) { | |
- | uHelfer(Leer, | + | part |
- | + | for(List< | |
- | uHelfer(Cons(k, | + | l.add(ki); |
- | + | } | |
+ | all.addAll(part); | ||
+ | } | ||
+ | } | ||
+ | return all; | ||
+ | } | ||
+ | </ | ||