Bin im Moment dabei einen Sudoko Löser zu programmieren. Allerdings hört er schon bei dem zweiten Element im Array auf... ich denke, dass ich da einfach irgendetwas falsch aufrufe oder so ???:L
die anderen Methoden spare ich mir, da ich denke, dass die wohl funktionieren. Also habe da noch eine für Eingabe, Ausgabe & um die Zahl zu pruefen.
Java:
public static boolean loese(int zeile, int spalte) {
//pruefen ob Ende der Zeile erreicht
if(spalte == 8) {
//dann naechste Zeile
zeile++;
spalte = 0;
//am Ende des Feldes?
if(zeile == 8) {
return true;
}
}
if(feld[zeile][spalte] > 0) {
/* dann haben wir einen Wert und koennen rekursiv weitergehen
* dabei in der Zeile eine Spalte weiter
*/
return loese(zeile,spalte+1);
}
//gehe die moeglichen Zahlen von 1 bis 9 durch und pruefe sie
for(int moegl=1; moegl<=9; moegl++) {
if(pruefe(zeile,spalte,moegl) == false) {
//wenn Wert OK setze diesen ein
feld[zeile][spalte] = moegl;
}
if(loese(zeile,spalte+1)) {
return true;
}
}
//Wenn der Versuch nicht geklappt hat, das Feld aus null setzen
feld[zeile][spalte] = 0;
return loese(zeile,spalte-1);
}
Java:
public static void main(String[] args) {
IO.println("Das eingegebene Sudoku: ");
ausgabe(feld);
loese(0,0);
IO.println("und die Loesung: ");
ausgabe(feld);
}
die anderen Methoden spare ich mir, da ich denke, dass die wohl funktionieren. Also habe da noch eine für Eingabe, Ausgabe & um die Zahl zu pruefen.