1+ public class sudokuSolver {
2+ public static boolean solve (int [][] sudoku ) {
3+ for (int i = 0 ; i < 9 ; i ++) {
4+ for (int j = 0 ; j < 9 ; j ++) {
5+ if (sudoku [i ][j ] == 0 ) {
6+ for (int n = 1 ; n <= 9 ; n ++) {
7+ if (isSafe (i , j , n , sudoku )) {
8+ sudoku [i ][j ] = n ;
9+ if (solve (sudoku )) return true ;
10+ else sudoku [i ][j ] = 0 ;
11+ }
12+ }
13+ return false ;
14+ }
15+ }
16+ }
17+ return true ;
18+ }
19+
20+ public static boolean isSafe (int row , int col , int num , int [][] sudoku ) {
21+ for (int i = 0 ; i < 9 ; i ++) {
22+ if (sudoku [i ][col ] == num || sudoku [row ][i ] == num ) return false ;
23+ if (sudoku [3 * (row / 3 ) + i / 3 ][3 * (col / 3 ) + i % 3 ] == num ) return false ;
24+ }
25+ return true ;
26+ }
27+
28+ public static void main (String [] args ) {
29+ int [][] sudoko = new int [][]{
30+ {5 , 3 , 0 , 0 , 7 , 0 , 0 , 0 , 0 },
31+ {6 , 0 , 0 , 1 , 9 , 5 , 0 , 0 , 0 },
32+ {0 , 9 , 8 , 0 , 0 , 0 , 0 , 6 , 0 },
33+ {8 , 0 , 0 , 0 , 6 , 0 , 0 , 0 , 3 },
34+ {4 , 0 , 0 , 8 , 0 , 3 , 0 , 0 , 1 },
35+ {7 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 6 },
36+ {0 , 6 , 0 , 0 , 0 , 0 , 2 , 8 , 0 },
37+ {0 , 0 , 0 , 4 , 1 , 9 , 0 , 0 , 5 },
38+ {0 , 0 , 0 , 0 , 8 , 0 , 0 , 7 , 9 }
39+ };
40+ solve (sudoko );
41+ for (int i = 0 ; i < 9 ; i ++) {
42+ for (int j = 0 ; j < 9 ; j ++) {
43+ System .out .print (sudoko [i ][j ] + " " );
44+ }
45+ System .out .println ();
46+ }
47+ }
48+ }
0 commit comments