G
gehweg
Gast
Hallo,
ich muss morgen ein Fachreferat über das acht-Damen-Problem halten und habe immense Schwierigkeiten den Quelltext zu verstehen. Hier ist also ein HILFERUF!!
Der Text sieht wie folgt aus:
[JAVA=42]
public class DamenproblemOhneThis {
//Attribute
int[][] feld; //Spielfeldmatrix (1-Dame, 0-freies Feld)
public static int lösungen = 0; //Anzahl der Lösungen
//Konstruktor
public DamenproblemOhneThis ()
{
feld = new int[8][8];
}
//Methoden
public void platziere(int zeile)
{
for(int spalte = 0; spalte < 8; spalte = spalte + 1)
{
feld[zeile][spalte] = 1;
if(korrektPlatziert())
if(zeile == 7)
{
ausgabe();
System.out.println("---------------");
DamenproblemOhneThis.lösungen = lösungen + 1;
}
else
platziere(zeile+1);
//Spalte wieder nullen
feld[zeile][spalte] = 0;
}
}
public void ausgabe()
{
for(int a = 0; a < 8; a = a + 1)
{
for(int b = 0; b < 8; b = b + 1)
System.out.print(feld[a]+" ");
System.out.println("");
}
}
public boolean korrektPlatziert()
{
boolean found = false;
//Überprüfen ob in jeder Zeile max. eine Dame steht
for(int a = 0; a < 8; a = a + 1)
{
found = false;
for(int b = 0; b < 8; b = b + 1)
{
if(feld[a] == 1)
if(found == false)
found = true;
else
return false;
}
}
//Überprüfen ob in jeder Spalte max. eine Dame steht
for(int b = 0; b < 8; b = b + 1)
{
found = false;
for(int a = 0; a < 8; a = a + 1)
{
if(feld[a] == 1)
if(found == false)
found = true;
else
return false;
}
}
//[links oben] -> [rechts unten] Diagonalen überprüfen
for(int zeile = 0; zeile < 8; zeile = zeile + 1)
{
found = false;
int spalte = 0;
while(zeile+spalte < 8)
{
if(feld[zeile+spalte][spalte] == 1)
if(found == false)
found = true;
else
return false;
spalte = spalte + 1;
}
}
for(int spalte = 1; spalte < 8; spalte = spalte + 1)
{
found = false;
int zeile = 0;
while(spalte+zeile < 8)
{
if(feld[zeile][spalte+zeile] == 1)
if(found == false)
found = true;
else
return false;
zeile = zeile + 1;
}
}
//[links unten] -> [rechts oben] Diagonalen überprüfen
for(int zeile = 7; zeile >= 0; zeile = zeile - 1)
{
found = false;
int spalte = 0;
while(zeile-spalte >= 0)
{
if(feld[zeile-spalte][spalte] == 1)
if(found == false)
found = true;
else
return false;
spalte = spalte + 1;
}
}
for(int spalte = 0; spalte <8; spalte = spalte + 1)
{
found = false;
int zeile = 0;
while(spalte+zeile < 8)
{
if(feld[8-zeile-1][spalte+zeile] == 1)
if(found == false)
found = true;
else
return false;
zeile = zeile + 1;
}
}
return true;
}
public static void main(String[] args)
{
DamenproblemOhneThis AQP = new DamenproblemOhneThis();
AQP.platziere(0);
System.out.println(DamenproblemOhneThis.lösungen+" Lösungen gefunden");
}
}
[/code]
ich muss morgen ein Fachreferat über das acht-Damen-Problem halten und habe immense Schwierigkeiten den Quelltext zu verstehen. Hier ist also ein HILFERUF!!
Der Text sieht wie folgt aus:
[JAVA=42]
public class DamenproblemOhneThis {
//Attribute
int[][] feld; //Spielfeldmatrix (1-Dame, 0-freies Feld)
public static int lösungen = 0; //Anzahl der Lösungen
//Konstruktor
public DamenproblemOhneThis ()
{
feld = new int[8][8];
}
//Methoden
public void platziere(int zeile)
{
for(int spalte = 0; spalte < 8; spalte = spalte + 1)
{
feld[zeile][spalte] = 1;
if(korrektPlatziert())
if(zeile == 7)
{
ausgabe();
System.out.println("---------------");
DamenproblemOhneThis.lösungen = lösungen + 1;
}
else
platziere(zeile+1);
//Spalte wieder nullen
feld[zeile][spalte] = 0;
}
}
public void ausgabe()
{
for(int a = 0; a < 8; a = a + 1)
{
for(int b = 0; b < 8; b = b + 1)
System.out.print(feld[a]+" ");
System.out.println("");
}
}
public boolean korrektPlatziert()
{
boolean found = false;
//Überprüfen ob in jeder Zeile max. eine Dame steht
for(int a = 0; a < 8; a = a + 1)
{
found = false;
for(int b = 0; b < 8; b = b + 1)
{
if(feld[a] == 1)
if(found == false)
found = true;
else
return false;
}
}
//Überprüfen ob in jeder Spalte max. eine Dame steht
for(int b = 0; b < 8; b = b + 1)
{
found = false;
for(int a = 0; a < 8; a = a + 1)
{
if(feld[a] == 1)
if(found == false)
found = true;
else
return false;
}
}
//[links oben] -> [rechts unten] Diagonalen überprüfen
for(int zeile = 0; zeile < 8; zeile = zeile + 1)
{
found = false;
int spalte = 0;
while(zeile+spalte < 8)
{
if(feld[zeile+spalte][spalte] == 1)
if(found == false)
found = true;
else
return false;
spalte = spalte + 1;
}
}
for(int spalte = 1; spalte < 8; spalte = spalte + 1)
{
found = false;
int zeile = 0;
while(spalte+zeile < 8)
{
if(feld[zeile][spalte+zeile] == 1)
if(found == false)
found = true;
else
return false;
zeile = zeile + 1;
}
}
//[links unten] -> [rechts oben] Diagonalen überprüfen
for(int zeile = 7; zeile >= 0; zeile = zeile - 1)
{
found = false;
int spalte = 0;
while(zeile-spalte >= 0)
{
if(feld[zeile-spalte][spalte] == 1)
if(found == false)
found = true;
else
return false;
spalte = spalte + 1;
}
}
for(int spalte = 0; spalte <8; spalte = spalte + 1)
{
found = false;
int zeile = 0;
while(spalte+zeile < 8)
{
if(feld[8-zeile-1][spalte+zeile] == 1)
if(found == false)
found = true;
else
return false;
zeile = zeile + 1;
}
}
return true;
}
public static void main(String[] args)
{
DamenproblemOhneThis AQP = new DamenproblemOhneThis();
AQP.platziere(0);
System.out.println(DamenproblemOhneThis.lösungen+" Lösungen gefunden");
}
}
[/code]