Skip to content

Commit d723fe3

Browse files
9X9 Sudoku Solver in C (#256)
Add 9X9 Sudoku Solver in C
1 parent 5f7fdd5 commit d723fe3

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

9X9_Sudoku_Solver/sudoku_solver.c

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#include <stdio.h>
2+
3+
int solve();
4+
5+
char sudoku[9][9];
6+
int isPossible(int i, int j, char k);
7+
8+
int main(){
9+
10+
for(int i = 0; i < 9; i++){
11+
for(int j = 0; j < 9; j++){
12+
scanf("%c ", &sudoku[i][j]);
13+
}
14+
}
15+
solve();
16+
for(int i = 0; i < 9; i++){
17+
for(int j = 0; j < 9; j++){
18+
printf("%c ", sudoku[i][j]);
19+
}
20+
printf("\n");
21+
}
22+
}
23+
24+
int isPossible(int i, int j, char k){
25+
for(int x = 0; x < 9; x++){
26+
if(sudoku[x][j] == k || sudoku[i][x] == k){
27+
return 0;
28+
}
29+
}
30+
for(int x = i - (i%3); x < i - (i%3) + 3; x++){
31+
for(int y = j - (j%3); y < j - (j%3) + 3; y++){
32+
if(sudoku[x][y] == k){
33+
return 0;
34+
}
35+
}
36+
}
37+
return 1;
38+
}
39+
40+
int solve(){
41+
for(int i = 0; i < 9; i++){
42+
for(int j = 0; j < 9; j++){
43+
if(sudoku[i][j] == '.'){
44+
for(char k = '1'; k <= '9'; k++){
45+
if(isPossible(i, j, k) == 1){
46+
sudoku[i][j] = k;
47+
if(solve() == 1){
48+
return 1;
49+
}
50+
else{
51+
sudoku[i][j] = '.';
52+
}
53+
}
54+
}
55+
return 0;
56+
}
57+
}
58+
}
59+
return 1;
60+
}

0 commit comments

Comments
 (0)