G
Gast
Gast
Hi, hatte folgenden Aufgabe:
"Einfach gesagt, lässt sich ein Sudoku folgendermaßen lösen:
- finde das erste freie Feld
- setze die Zahlen 1-9 ein und versuche bei jeder das restliche Sudoku zu lösen
- ist eine Lösung gefunden gib sie aus
- ansonsten sag, dass es nicht möglich ist, das Sudoku zu lösen"
Das Sudoku wird in nem 9x9 Array übergeben.
Meine Methode dazu sieht bisher so aus:
------------------------------------------------------------------------
------------------------------------------------------------------------
dürfte alles richtig sein (die Methode SudokuTest funktioniert nachweislich einwandfrei). Ich habe schließlich in ner extra Klasse die Methode mit nem Testsudoku aufgerufen, aber genau dieses wird auch wieder zurückgegeben, obwohl es lösbar ist... Ich glaube das Problem steckt bei "feld= loese(feld);" da ich ja bei arrays nur die referenzen übergebe, könnte mir das Probleme machen oder? Wäre nett, wenn ihr mir helfen könntet
"Einfach gesagt, lässt sich ein Sudoku folgendermaßen lösen:
- finde das erste freie Feld
- setze die Zahlen 1-9 ein und versuche bei jeder das restliche Sudoku zu lösen
- ist eine Lösung gefunden gib sie aus
- ansonsten sag, dass es nicht möglich ist, das Sudoku zu lösen"
Das Sudoku wird in nem 9x9 Array übergeben.
Meine Methode dazu sieht bisher so aus:
------------------------------------------------------------------------
Code:
int[][] loese (int[][] feld){
int x=0,y=0;
while (feld[x][y]!=0){ //hier soll das erste leere Feld gefunden werden
if (x==8 && y==8) return feld; //Abbruchbedingung: ganzes Feld geloest
if (x!=8) x++; else {x=0; y++;} //zu naechstem Feld springen
}
for (int a=1; a<=10; a++){ //Zahlen von 1-9 versuchen einzusetzen
if (a==10) {feld[x][y]=0; return feld;} //zweite Abbruchbedingung: wenn 1-9 nicht geht, Feld freim.
feld[x][y]=a;
if (Sudoku.SudokuTest(feld)){ //wenn Zahl zulässig, versuche restliche Felder zu lösen
feld=loese(feld);
}
}
return feld; //eigentlich unnötig, wird aber für Syntax benötigt
}
dürfte alles richtig sein (die Methode SudokuTest funktioniert nachweislich einwandfrei). Ich habe schließlich in ner extra Klasse die Methode mit nem Testsudoku aufgerufen, aber genau dieses wird auch wieder zurückgegeben, obwohl es lösbar ist... Ich glaube das Problem steckt bei "feld= loese(feld);" da ich ja bei arrays nur die referenzen übergebe, könnte mir das Probleme machen oder? Wäre nett, wenn ihr mir helfen könntet