Ich steh gerade aufm Schlauch :wall:
Das n-Damenproblem besagt das auf einem (Schach-)Feld der Größe n*n bis zu n Damen so positioniert werden können das sie sich gegenseitig nicht schlagen können.
Um eine Lösung zu generieren habe ich folgende rekursive Methode geschrieben. Wobei n die feldgröße sowie anzahl der damen beschreibt und das schachfeld als bitfeld, in form eines 2-dim. booleanschen arrays mit dimensionsgrößen n, beschrieben wird. Die Methode dame_erlaubt gibt ihrem namen entsprechend zurück ob eine dame an der stelle x,y erlaubt ist.
	
	
	
		
Zwar läuft das alles schön durch, aber gibt erzeugt ein falsches Feld. Für n=8 sieht das Bitfeld danach so aus:
	
	
		
			
	
	
	
		
		
	
				
			Das n-Damenproblem besagt das auf einem (Schach-)Feld der Größe n*n bis zu n Damen so positioniert werden können das sie sich gegenseitig nicht schlagen können.
Um eine Lösung zu generieren habe ich folgende rekursive Methode geschrieben. Wobei n die feldgröße sowie anzahl der damen beschreibt und das schachfeld als bitfeld, in form eines 2-dim. booleanschen arrays mit dimensionsgrößen n, beschrieben wird. Die Methode dame_erlaubt gibt ihrem namen entsprechend zurück ob eine dame an der stelle x,y erlaubt ist.
		Code:
	
	  public static boolean dame_setzen(int zeile) {
    boolean erlaubt = true;
    for (int i=0; i<n; i++) {
        if (dame_erlaubt(i,zeile) == true) {
          feld[i][zeile] = true;
          if (zeile+1 != n) {          
            dame_setzen(zeile+1);
            if (dame_setzen(zeile+1) == false) feld[i][zeile] = false;
          } else {
            int damenanzahl = 0;
            for (int j=0; j<n; j++) {
              for (int k=0; k<n; k++) {
                if (feld[k][j] == true) damenanzahl++;
              }
            }             
            if (damenanzahl != n) erlaubt = false;
          }
        }
    }
    return erlaubt;
  }
		Code:
	
	   | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---+---+---+---+---+---+---+---+---+
 1 | D |   |   |   |   |   |   |   |
---+---+---+---+---+---+---+---+---+
 2 |   | D |   |   |   |   |   |   |
---+---+---+---+---+---+---+---+---+
 3 |   |   |   |   | D |   |   |   |
---+---+---+---+---+---+---+---+---+
 4 |   |   | D |   |   |   |   |   |
---+---+---+---+---+---+---+---+---+
 5 |   |   |   |   |   | D |   |   |
---+---+---+---+---+---+---+---+---+
 6 |   |   |   | D |   |   |   |   |
---+---+---+---+---+---+---+---+---+
 7 |   |   |   |   |   |   |   |   |
---+---+---+---+---+---+---+---+---+
 8 |   |   |   |   |   |   |   |   |
---+---+---+---+---+---+---+---+---+![[HaBo]](/styles/default/logoklein.png) 
				 
 
		 , returt die Methode nach "feld[zeile]=false" trotzdem ein erlaubt==true. Zusammen damit, dass nicht jeder Schritt rückgängig gemacht wird, ergibt sich wohl solch eine "komische" Ausgabe.
 , returt die Methode nach "feld[zeile]=false" trotzdem ein erlaubt==true. Zusammen damit, dass nicht jeder Schritt rückgängig gemacht wird, ergibt sich wohl solch eine "komische" Ausgabe.
