Sudoku Löser

pilx

Mitglied
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
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.
 

XHelp

Top Contributor
Irgendwie sieht den Lösungsansatz nicht wirklich vollständig aus. Du überprüfst keine Zeilen, es kommt auch drauf an was in
Code:
pruefe
passiert etc.
Selbst auf wikipedia müssten Lösungsansätze in Pseudocode stehen, schau sie dir einfach mal an.
 

Neue Themen


Oben