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.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
pruefungen:bachelor:aud:loesung-miniklausur-19 [12.01.2020 09:58] Dbadtf_385pruefungen:bachelor:aud:loesung-miniklausur-19 [19.06.2020 12:02] (aktuell) kat04
Zeile 1: Zeile 1:
 ===== Lösungsversuch Miniklausur WS 2019/20 ===== ===== Lösungsversuch Miniklausur WS 2019/20 =====
 +
 +
 +==== Aufgabe 1 (Wissensfragen) ====
 +1) 1&2
 +
 +2) 2&3
 +
 +3) 3&4
 +
 +
 +==== Aufgabe 2 (ADT) ====
 +
 +**a)**
 +
 +erweitern(p, Leer) = Leer
 +
 +erweitern(p, Cons(Cons(k, l1), l2)) = Cons(Cons(p,Cons(k,l1),l2))
 +
 +
 +**b)**
 +
 +alle(Leer) = Leer
 +
 +alle(Cons(k, leer)) = Cons(Cons(k,Leer),Leer)
 +
 +alle(Cons(k, l)) = erweitern(k,alle(l))
 +
 +**c)**
 +
 +uHelfer(Leer,ergebnis) = ergebnis
 +
 +uHelfer(Cons(k,l),ergebnis)= uHelfer(l,Cons(k,ergebnis))
 +
 +
  
 ==== Aufgabe 3 (Backtracking) ==== ==== Aufgabe 3 (Backtracking) ====
-(sehr unsicher, kann aber als Diskussionsgrundlage genutzt werden)+
  
 **a)** **a)**
Zeile 74: Zeile 108:
  }  }
 </code> </code>
 +
 +
 +
 +==== Aufgabe 4 (Memoization und DP) ====
 +**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);
 + }
 +
 + long multiFacMem(int k, int... ks) {
 + long div = 1;
 + long[] arr = new long[k + 1];
 + for (int ki : ks)
 + div *= facMem(ki, arr);
 + return facMem(k, arr) / div;
 +
 + }
 +</code>
 +
 +**b)**
 +<code java>
 + List<List<Integer>> powers(int n, int k) {
 + List<List<Integer>> all = new ArrayList<>(), part;
 + if (n <= 1) {
 + List<Integer> last = new ArrayList<>();
 + last.add(k);
 + all.add(last);
 + } else {
 + for (int ki = k; ki >= 0; ki--) {
 + part = powers(n - 1, k - ki);
 + for(List<Integer> l:part) {
 + l.add(ki);
 + }
 + all.addAll(part);
 + }
 + }
 + return all;
 + }
 +</code>
 +
 +
 +