Hi!
Ich versuche mich grade an einem Backtracking-Verfahren à la "Try and Error"...
Hab auch schon was auf die Beine gestellt nur hängts jetzt irgenwie nen bisschen!
Es kommt soweit kein vernünftiges Ergebnis....
Ich versuche mich grade an einem Backtracking-Verfahren à la "Try and Error"...
Hab auch schon was auf die Beine gestellt nur hängts jetzt irgenwie nen bisschen!
Code:
public void backtracking(){
int[][] stackN = new int[81][2];
String[][] stackS = new String[81][2];
int schritt = 0;
String versuchzahl = new String();
boolean error = false;
for (int a = 0; a <= 8; a++){
for (int b = 0; b <= 8; b++){
if (schritt < 81){
if (schritt < 81){
versuchzahl = vTab[a][b];
//Block ermitteln
int m = 0, n = 0;
if (a >= 0 && a <= 2){
m = 2;
}else if (a >= 3 && a <= 5){
m = 5;
}else if (a >= 6 && a <= 8){
m = 8;
}
if (b >= 0 && b <= 2){
n = 2;
}else if (b >= 3 && b <= 5){
n = 5;
}else if (b >= 6 && b <= 8){
n = 8;
}
if (versuchzahl.length() > 1){
tempzahl = versuchzahl.substring(0, 1);
stackN[schritt][0] = a;
stackN[schritt][1] = b;
stackS[schritt][0] = versuchzahl;
stackS[schritt][1] = tempzahl;
aktzahl = tempzahl;
vergleich = tempzahl;
ausschlussZ(a); //ausschlussZ, ausschlussS und ausschlussB funktionieren fehlerfrei
ausschlussS(b);
ausschlussB(m, n);
schritt++;
}else if (versuchzahl.length() == 0){
error = true;
schritt --;
a = stackN[schritt][0];
b = stackN[schritt][1];
vTab[a][b] = stackS[schritt][0].replace(vergleich, "");
error = false;
}else {
stackN[schritt][0] = a;
stackN[schritt][1] = b;
stackS[schritt][0] = versuchzahl;
stackS[schritt][1] = tempzahl;
aktzahl = versuchzahl;
ausschlussZ(a);
ausschlussS(b);
ausschlussB(m, n);
schritt++;
}
}
}else{
a = 8;
b = 8;
}
}
}
}