-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathSudoko.java
99 lines (91 loc) · 2.59 KB
/
Sudoko.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*package whatever //do not write package name here */
import java.io.*;
import java.util.*;
import java.lang.*;
class GFG {
public static boolean issafetoput(int[][] sudoko , int i , int j , int number){
for(int k = 0 ; k < 9 ; k++){
if(sudoko[i][k] == number || sudoko[k][j] == number ){
return false ;
}
}
int starti = (i/3)*3;
int startj = (j/3)*3;
for(int k = starti ; k < 3+starti ; k++){
for(int l = startj ; l < 3+startj ; l++){
if(sudoko[k][l] == number){
return false ;
}
}
}
return true ;
}
public static boolean sudokoSolver(int[][] sudoko ,int i , int j){
int n = 9;
if(i == n ){
for(int l = 0 ; l < n ; l++){
for(int k = 0 ; k < n ; k++){
System.out.print(sudoko[l][k]+" ");
}
System.out.print("\n");
}
System.out.print("\n");
return true;
}
if(j==n){
return sudokoSolver(sudoko , i+1 , 0);
}
if(sudoko[i][j] != 0 ){
return sudokoSolver(sudoko , i , j+1) ;
}
for(int num = 1 ; num<10;num++){
if(issafetoput(sudoko , i , j , num) == true){
sudoko[i][j] = num;
boolean checker = sudokoSolver(sudoko , i , j+1);
if(checker == true){
return true ;
}
sudoko[i][j] = 0 ;
}
}
return false ;
}
public static void main (String[] args) {
int sudoko[][] = {
{
0,0,5,0,0,9,0,0,0
},
{
6,1,0,0,3,8,9,0,0
},
{
8,0,0,2,1,0,0,5,0
},{
0,0,6,0,0,0,0,0,9
},
{
0,0,3,0,0,0,1,0,0
},
{
5,0,0,0,0,0,7,0,0
},
{
0,7,0,0,4,5,0,0,1
},
{
0,0,1,8,7,0,0,9,2
},
{
0,0,0,6,0,0,4,0,0
}
};
sudokoSolver(sudoko , 0 , 0);
// for(int l = 0 ; l < 9 ; l++){
// for(int k = 0 ; k < 9 ; k++){
// System.out.print(sudoko[l][k]+" ");
// }
// System.out.print("\n");
// }
// System.out.print("\n");
}
}