Hi Leute, ich habe wieder das Problem, dass ich meine Gedanken nicht zu Code bringen kann.
Ich habe dieses Problem auch schon gegoogelt und versucht aus den Codes von anderen Schlüsse zu ziehen, doch komme trotzdem nicht voran. (Bin noch Anfänger und muss mir dieses Code/Algorithmus-Denken noch etwas aneignen)
Ich habe ein Schachbrett (8x8) und muss darauf 8 Damen so platzieren, dass sie sich weder vertikal, noch horizontal, noch diagonal bedrohen.
Mein bisheriger Quellcode:
Ich finde meinen Fehler nicht und ich glaube ich habe auch ein Problem beim allgemeinen Verständnis des Algorithmus.
Ich hoffe ihr könnt mir weiterhelfen.
LG ElifÖzt
Ich habe dieses Problem auch schon gegoogelt und versucht aus den Codes von anderen Schlüsse zu ziehen, doch komme trotzdem nicht voran. (Bin noch Anfänger und muss mir dieses Code/Algorithmus-Denken noch etwas aneignen)
Ich habe ein Schachbrett (8x8) und muss darauf 8 Damen so platzieren, dass sie sich weder vertikal, noch horizontal, noch diagonal bedrohen.
Mein bisheriger Quellcode:
Java:
public class Queens {
private int [] conf;
int zaehler;
int keineDame = -1;
public Queens() {
this.conf = new int[] {0, 1, 2, 3, 4, 5, 6, 7};
}
//läuft Array conf ab und gibt es dann aus
public void printConf(){
for(int i = 0; i<conf.length; i++){
System.out.print(conf[i] + " ");
}
}
//läuft bis i durch und schaut ob conf[i] bedroht ist
//wenn auf gleicher Zeile, gleicher Spalte und gleicher Diagonale keine Dame steht gib true zurück
public boolean threatened(int i, int j){
for (int k = 0; k<i; k++){
int d = i-k;
if(conf[i]==j || conf[i]==j-d || conf[i]==j+d) {
return true;
}
}
return false;
}
//place belegt das nicht bedrohte Feld mit einer Dame
//läuft Array ab und wenn ein Platz nicht bedroht ist, wird an die Stelle eine Dame gesetzt
public void place(int i){
for(int s=0; s<conf.length ; s++){
if(!threatened(i, s)){
this.conf[s]=i;
if(i==conf.length-1){
printConf();
zaehler++;
}
else{
place(i+1);
}
}
}
}
public static void main(String[] args){
Queens a = new Queens();
//a.printConf();
a.place(1);
}
}
Ich finde meinen Fehler nicht und ich glaube ich habe auch ein Problem beim allgemeinen Verständnis des Algorithmus.
Ich hoffe ihr könnt mir weiterhelfen.
LG ElifÖzt