Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » pfp » Forendiskussionen

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
Nächste ÜberarbeitungBeide Seiten, nächste Überarbeitung
pruefungen:bachelor:pfp:loesungws13 [17.07.2016 12:42] – Scala Syntax Error Marcel[Inf]pruefungen:bachelor:pfp:loesungws13 [02.04.2017 16:42] Danplan
Zeile 131: Zeile 131:
  }  }
  
 +==== Aufgabe 7 (Backtracking) ====
 +[[pruefungen:bachelor:pfp:loesungws13:codezuraufgabe7|>>>code zum selber testen<<<]]
  
 +**a)**
 +
 +<code java>
 +static boolean isSolved(int[][] sq) {
 + int n = sq.length;
 + int checkSum = ((n * n * n) + n) / 2;
 + int rowSum = 0, colSum = 0, diag1Sum = 0, diag2Sum = 0;
 +
 + for(int y= 0 ; y< n; y++){
 +
 + diag1Sum += sq[y][y];
 + diag2Sum += sq[n-1-y][n-1-y];
 +
 + for(int x=0; x < n ; x++){
 + rowSum += sq[y][x];
 + colSum += sq[x][y];
 + }
 +
 + if(rowSum != checkSum || colSum != checkSum)
 + return false;
 +
 + rowSum=colSum=0;
 + }
 +
 + if(diag1Sum != checkSum || diag2Sum != checkSum)
 + return false;
 +
 + return true;
 + }
 +
 +</code>
 +
 +**b)**
 +
 +<code java>
 + static boolean solve(int[][] sq, int pos, boolean[] used) {
 + int n = sq.length;
 + int col = pos % n;
 + int row = (pos - col) / n;
 +
 + // Basisfall
 + if(isSolved(sq))
 + return true;
 +
 + //Rekursion
 + for(int i=0; i < n*n; i++){
 + if(!used[i]){
 + used[i]=true;
 + int c=i+1;
 + sq[col][row]=c;
 +
 + if(solve(sq,pos+1,used))
 + return true;
 +
 + sq[col][row]=0;
 + used[i]=false;
 + }
 + }
 + return false;
 + }
 +</code>