-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgame.java
88 lines (76 loc) · 1.96 KB
/
game.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
public class game {
public static boolean issafe(int sudoku[][], int row, int col, int digit){
// column
for(int i=0;i<=8;i++){
if(sudoku[i][col]== digit){
return false;
}
}
// row
for(int j=0;j<=8;j++){
if(sudoku[row][j]== digit){
return false;
}
}
// grid
int sr=(row/3)*3;
int sc=(col/3)*3;
for(int i=sr; i<sr+3;i++){
for(int j=sc;j<sc+3;j++){
if(sudoku[i][j]==digit){
return false;
}
}
}
return true;
}
public static boolean sudokosolver(int sudoku[][], int row, int col){
if(row==9 ){
return true;
}
int nextrow= row, nextcol=col+1;
if(col+1==9){
nextrow=row+1;
nextcol=0;
}
if(sudoku[row][col]!=0){
return sudokosolver(sudoku, nextrow, nextcol);
}
for(int digit=1;digit<=9;digit++){
if(issafe(sudoku, row, col, digit)){
sudoku[row][col]= digit;
if(sudokosolver(sudoku, nextrow, nextcol)){
return true;
}
sudoku[row][col]=0;
}
}
return false;
}
public static void printsuduku(int sudoku[][]){
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
System.out.print((sudoku[i][j]+ " "));
}
System.out.println();
}
}
public static void main(String args[]){
int sudoku[][] = { { 0 , 0 , 8 , 0 , 0 , 0 , 0 , 0 , 0 } ,
{ 4 , 9 , 0 , 1 , 5 , 7 ,0 , 0 , 2 },
{ 0 , 0 , 3 , 0 , 0 , 4 , 1 , 9 , 0 },
{ 1 , 8 , 5 , 0 , 6 , 0 , 0 , 2 , 0 },
{ 0 , 0 , 0 , 0 , 2 , 0 , 0 , 6 , 0 },
{ 9 , 6 , 0 , 4 , 0 , 5 , 3 , 0 , 0 },
{ 0 , 3 , 0 , 0 , 7 , 2 , 0 , 0 , 4 } ,
{ 0 , 4 , 9 , 0 , 3 , 0 , 0 , 5 , 7 } ,
{ 8 , 2 , 7 , 0 , 0 , 9 , 0 , 1 , 3, } } ;
if(sudokosolver(sudoku, 0, 0)){
System.out.println("solution does exist");
printsuduku(sudoku);
}
else{
System.out.println("solution does not exist");
}
}
}