A Sudoku solver using a backtracking algorithm.
Welcome to my very first project! It may not be the greatest, but here we have the start of my coding journey.
This Sudoku Solver is written in C++ and runs locally using JavaScript.
The project demonstrates the efficiency of backtracking in solving combinatorial problems.
#include <bits/stdc++.h> using namespace std; ifstream fin("sudoku.in"); ofstream fout("sudoku.out"); int a[9][9]; bool verif(int i, int j, int val) { for (int k = 0; k < 9; k++) { if (a[i][k] == val || a[k][j] == val) { return false; } } int k = i - (i % 3), l = j - (j % 3); for (int p = 0; p < 3; p++) { for (int q = 0; q < 3; q++) { if (a[k+p][l+q] == val) { return false; } } } return true; } bool solve(int i, int j) { if (i == 8 && j == 9) { return true; } if (j == 9) { return solve(i+1, 0); } if (a[i][j] > 0) { return solve(i, j+1); } for (int nr = 1; nr <= 9; nr++) { if (verif(i, j, nr)) { a[i][j] = nr; if(solve(i, j+1)) { return true; } } a[i][j] = 0; } return false; } int main() { for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { fin >> a[i][j]; } } if (solve(0, 0)) { for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { fout << a[i][j] << " "; } fout << "\n"; } } else { fout << "Cannot be completed."; } exit(0); }