Bin im Moment dabei das Springerproblem zu programmieren. Ich denke, dass der Quelltext eigentlich ganz gut aussieht, leider bekomme ich aber immer nur lauter nullen ausgegeben.
Java:
package Springer;
import AlgoTools.IO;
public class Springer {
public static int[] moegzeile = {1,-1,1,-1,2,2,-2,-2};
public static int[] moegspalte = {2,-2,-2,2,-1,1,-1,1};
private static boolean springe(int[][] a, int n, int zeile, int spalte) {
//Rekursionsbremse
if(n == (a.length)*(a.length)) return true;
for(int i=0; i<8; i++) {
int z = zeile+moegzeile[i];
int s = spalte+moegspalte[i];
if(pruefe(a,z,s)) {
if(springe(a,n+1,z,s)) {
return true;
}
else return false;
}
}
return false;
}
private static boolean pruefe(int[][] a, int zeile, int spalte) {
if(zeile >= a.length || zeile <= 0) return false;
if(spalte >= a[0].length || spalte <= 0) return false;
if(a[zeile][spalte] != 0) return false;
return true;
}
public static void ausgabe(int[][] a) {
for(int i=0; i < a.length; i++) {
for(int j=0; j < a[0].length; j++) {
IO.print(a[i][j],3);
}
IO.println();
}
}
public static void main(String argv[]) {
int groesse;
int startZ, startS;
int[][] brett;
do {
groesse = IO.readInt("Bitte Kantenlaenge: ");
}
while(groesse < 5);
do {
startZ = IO.readInt("Bitte Zeile: ");
}
while(startZ < 0 || startZ > groesse);
do {
startS = IO.readInt("Bitte Spalte: ");
}
while(startS < 0 || startS > groesse);
brett = new int[groesse][groesse];
springe(brett,1,startZ,startS);
ausgabe(brett);
}
}