D
DPFarin
Gast
Joar moin,
ich habe ein Problem mit dem oben genanneten Problem...
Die aufgabe die zu Lösen ist ist einfach
.
Es geht um den Springer beim Schach... Er soll auf jedes Feld genau einmal Springen. und darf auch jedes nur einmal berühren... Das habe ich auch gelöst... Quellcode siehe unten...
Aber ich soll es auch schaffen, das ich einen Endpunkt angebe... Sprich der Springer soll auf jedes Feld 1 mal springen und halt mit dem letzen Sprung auf den Endpunkt laden... ( wenn ihr das zu hause testen wollt nehmt nen 5*5 Feld anstatt nen 8*8 )...
wäre für hilfe dankbar
mfg Farin
So hier mal mein Quellcode von meiner SpringerKlasse
und meine HauptMethode
ich habe ein Problem mit dem oben genanneten Problem...
Die aufgabe die zu Lösen ist ist einfach
Es geht um den Springer beim Schach... Er soll auf jedes Feld genau einmal Springen. und darf auch jedes nur einmal berühren... Das habe ich auch gelöst... Quellcode siehe unten...
Aber ich soll es auch schaffen, das ich einen Endpunkt angebe... Sprich der Springer soll auf jedes Feld 1 mal springen und halt mit dem letzen Sprung auf den Endpunkt laden... ( wenn ihr das zu hause testen wollt nehmt nen 5*5 Feld anstatt nen 8*8 )...
wäre für hilfe dankbar
mfg Farin
So hier mal mein Quellcode von meiner SpringerKlasse
Code:
public class SpringerProblem {
int n = 8;
int[][] meinFeld = new int[n][n];
int xKord[] = { 2, 2, -2, -2, 1, 1, -1, -1 };
int yKord[] = { 1, -1, 1, -1, 2, -2, 2, -2 };
public boolean jump(int nummer, int x, int y) {
int zug = 0;
int newx, newy;
boolean loesung;
do {
zug++;
loesung = false;
newx = x + xKord[zug - 1];
newy = y + yKord[zug - 1];
if (newx >= 0 && newx < n && newy >= 0 && newy < n) {
if (meinFeld[newx][newy] == 0) {
meinFeld[newx][newy] = nummer;
if (nummer < (n * n)) {
loesung = jump(nummer + 1, newx, newy);
if (loesung == false) {
meinFeld[newx][newy] = 0;
}
} else {
loesung = true;
meineTestAusgabe();
}
}
}
} while ((loesung == false) && (zug < 8));
return loesung;
}
public void meineTestAusgabe() {
for (int g = 0; g < n * n; g++) {
for (int j = 0; j < meinFeld.length; j++) {
for (int i = 0; i < meinFeld.length; i++) {
if(meinFeld[i][j] == g){
System.out.println("P (" +i +" / " + j + ")" );
}
}
}
}
}
}
und meine HauptMethode
Code:
public class HauptSpringerProblem {
public static void main(String args[]) {
SpringerProblem s1 = new SpringerProblem();
// Der Startpunkt
int anfangx = 2;
int anfangy = 2;
// Das erste Feld den wert 1 zuweisen
s1.meinFeld[anfangx][anfangy] = 1;
// Starte das "suchen" der richtigen Lösung
s1.jump(2, anfangx, anfangy);
System.out.print("Programm Ende");
}
public static void meineTestAusgabe() {
}
}