Sie befinden sich hier: Termine » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » aud » Forendiskussionen   (Übersicht)

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Both sides previous revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
pruefungen:bachelor:aud:loesung-miniklausur-14 [28.03.2016 17:35]
Marcel[Inf] Code vereinfacht
pruefungen:bachelor:aud:loesung-miniklausur-14 [20.07.2019 17:59]
Dbadtf_385
Zeile 40: Zeile 40:
 **b)** **b)**
 <code java> <code java>
-static void toggleRectangle(boolean[][] used, int row, int column, Rectangle r){ + static void toggleRectangle(boolean[][] used, int row, int column, Rectangle r){ 
-    for(int i = 0; i < used.length; i++){ +      for(int i = 0; i < r.height; i++){ 
-        for(int j = 0; j < used[i].length; j++){ +          for(int j = 0; j< r.width; j++){ 
-            used[row + i][column + j] = !used[row + i][column + j];  +              used[row + i][column + j] = !used[row + i][column + j];  
-        }+           } 
 +       }
     }     }
-} 
 </​code>​ </​code>​
  
Zeile 169: Zeile 169:
     return Math.max(without,​ with); ​     return Math.max(without,​ with); ​
 } }
 +
 +/*Anmerkung anderer Student:
 +Ich bin mir nicht wirklich sicher, ob der obige Code korrekt alle Corner Cases abgedeckt. Wuerde man z.B. die Methode auf einem TenTree ausfuehren, der nur aus Wurzel und einer einzigen Kante in children[0] besteht, dann gibt diese Methode 0 zurueck, das richtige Ergebnis waere aber (falls ich die Aufgabe richtig verstanden habe) 1, da eine Kante hierbei die laengste Distanz im Baum darstellen wuerde.
 +
 +Anbei meine Loesung: */
 +static int longest (TenTree tree) {
 +    //Basisfall
 +    if(tree == null) return 0;
 +    //Fall1: Wurzel ist *nicht* Teil des laengsten Pfads
 +    int without = 0;
 +    for(int i = 0; i<​tree.children.length;​i++) {
 +        if(tree.children[i]!= null) {
 +     without = Math.max(without, ​ longest(tree.children[i]));​
 + }
 +    }
 +
 +    //Fall 2: Wurzel *ist* Teil des laengsten Pfads
 +    int with = 0;
 +    int tmpmax = 0;
 +    int cnt = 0;
 +    for(int i = 0; i<​tree.children.length;​i++) {
 +        if(tree.children[i]!= null) {
 +     cnt ++;
 +     for(int j = i+1; j< tree.children.length;​j++) {
 +         if(tree.children[j] != null) {
 +         // 2. Pfad gefunden: Pruefe ob die Distanz zwischen den Blaettern der beiden Pfade maximal ist
 +             tmpmax = Math.max(tmpmax,​ height(tree.children[i]) + height(tree.children[j]));​
 +         }
 +            }
 +       }
 +    }
 +    //es wurden min. 2 Pfade gefunden: Zum laengsten Pfad muessen jetzt noch die zwei Kanten addiert werden,
 +    //welche die Verbindung zur aktuellen Wurzel darstellen
 +    if(cnt>​1) {
 +        with = tmpmax +2;
 +    } else {
 +    // es gab nur 0-1 Pfade von dieser Wurzel aus. Die Laenge ist demnach 0 oder 1
 +        with = cnt; 
 +    }
 +    return Math.max(with,​ without);
 +}
 +
 </​code>​ </​code>​