سلام
پیاده سازی برنامه "حل کننده سودوکو" با جاوا :
import java.util.*;
public class SudokuSolver {
public static void main(String[] args) {
int[][] array={
{ 8, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 3, 6, 0, 0, 0, 0, 0 },
{ 0, 7, 0, 0, 9, 0, 2, 0, 0 },
{ 0, 5, 0, 0, 0, 7, 0, 0, 0 },
{ 0, 0, 0, 0, 4, 5, 7, 0, 0 },
{ 0, 0, 0, 1, 0, 0, 0, 3, 0 },
{ 0, 0, 1, 0, 0, 0, 0, 6, 8 },
{ 0, 0, 8, 5, 0, 0, 0, 1, 0 },
{ 0, 9, 0, 0, 0, 0, 4, 0, 0 }};
solve(array,0,0);
showSudoku(array);
}
public static boolean solve(int[][]array, int i, int j) {
for (i = 0;i < array.length;i++) {
for (j = 0;j < array[i].length;j++) {
if (array[i][j] == 0) {
for (int z=1;z <= 9;z++) {
array[i][j] = z;
if (paste(array, i, j, z) && solve(array, i, j + 1)) {
return true;
} else {
array[i][j] = 0;
}
}
return false;
}
}
}
return true;
}
public static boolean paste(int[][]array, int i, int j, int val) {
for (int x = 0; x < 9; x++) {
if (x != j) {
if (array[i][x] == val) {
return false;
}
}
}
for (int x = 0; x < 9; x++) {
if (x != i) {
if (array[x][j] == val) {
return false;
}
}
}
for (int x = (i / 3) * 3; x < (i / 3) * 3 + 3; x++) {
for (int y = (j / 3) * 3; y < (j / 3) * 3 + 3; y++) {
if ((x != i) || (y != j)) {
if (array[x][y] == val) {
return false;
}
}
}
}
return true;
}
public static void showSudoku(int[][]array) {
for (int i=0;i < array.length;i++) {
for (int j=0;j < array[i].length;j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
}