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 [17.02.2020 17:02] kat04pruefungen: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 =====
-(sehr unsicher, kann aber als Diskussionsgrundlage genutzt werden)+ 
 + 
 +==== Aufgabe 1 (Wissensfragen==== 
 +1) 1&2 
 + 
 +2) 2&3 
 + 
 +3) 3&4 
 + 
 ==== Aufgabe 2 (ADT) ==== ==== Aufgabe 2 (ADT) ====
  
Zeile 100: Zeile 109:
 </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>