我想使用回溯生成一个简单的数独生成器。我被卡住了/不知道我是否正确使用了回溯。zahlIstGueltigAufPosition如果数字zahl有效则返回(如果 zahl 在行/列或 9 个框之一中出现一次)。
public static boolean fuelleArray(int y, int x, int zahl){
sudokuArray[y][x]=zahl;
if(zahlIstGueltigAufPosition(y,x,zahl)){
if(x==8 && y<=7 && fuelleArray(y+1,0,1)){
return true;
}else if(x==8 && y==8 && fuelleArray(y,x,zahl)) {
return true;
}else if(x<=7 && y<=8){
if(fuelleArray(y,x+1,1)) {
return true;
}
}
}else{
if(zahl<9 && x<=8 && y<=8 ){fuelleArray(y,x,zahl+1);}
}
return false;
}
该计划给出:
1 2 3 4 5 6 7 8 9
4 5 6 1 2 3 9 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
谢谢你的帮助