Sudoku Solver v2

Run Settings
LanguageC++
Language Version
Run Command
#include <iostream> using namespace std; class Solver{ public: bool checkSpot(int r, int c, int n){ for( int i = 0; i < 9; i ++ ){ if(sudoku[r][i] == n || sudoku[i][c] == n) return false; } int boxr = ((int)(r/3)) * 3; int boxc = ((int)(c/3)) * 3; for( int i = 0; i < 3; i ++ ){ for( int j = 0; j < 3; j++ ){ if( sudoku[boxr+i][boxc+j] == n ) return false; } } return true; } bool backTracker(int r=0, int c=0){ steps++; if(r == 9) return true; if(sudoku[r][c] == 0){ for( int i = 1; i < 10; i++){ if(checkSpot(r,c,i)){ sudoku[r][c] = i; if( backTracker( r + ((int)(c+1)/9), (c+1)%9 ) ) return true; } } sudoku[r][c] = 0; return false; } else if( backTracker( r + ((int)(c+1)/9), (c+1)%9 ) ){ return true; } else{ return false; } } void output(){ for( int x = 0; x < 9 ; x++ ){ if(x % 3 == 0){ cout << " + - - - + - - - + - - - + " << endl; } for( int y = 0; y < 9; y ++){ if(y % 3 == 0){ cout << " + "; } cout << " "<< sudoku[x][y] << " "; } cout << " +" << endl; } cout << " + - - - + - - - + - - - + " << endl << endl; cout << "[SUDOKU SOLVED][TOOK " << steps << " STEPS]" << endl; } private: int sudoku[9][9] = { {0,6,0,9,0,0,8,0,0}, {5,0,0,6,0,0,3,1,4}, {0,7,8,0,0,0,9,0,5}, {8,0,0,0,5,0,2,9,0}, {0,0,5,7,0,8,4,0,0}, {0,3,1,0,2,0,0,0,8}, {2,0,6,0,0,0,1,4,0}, {3,8,4,0,0,6,0,0,9}, {0,0,9,0,0,2,0,8,0} }; int steps = 0; }; int main() { Solver s; s.backTracker(); s.output(); return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines