Solve Sudoku (Backtracking)?
bool SolveSudoku(char[][] board)
for (int i = 0; i < 9; i++)
for (int j = 0; j < 9; j++)
Follow on:
if (board[i][j] == '.')
for (char c = '1'; c <= '9'; c++)
if (IsValid(board, i, j, c))
board[i][j] = c;
if (SolveSudoku(board))
return true;
else
board[i][j] = '.';
return false;
return true;
bool IsValid(char[][] board, int row, int col, char c)
for (int i = 0; i < 9; i++)
if (board[row][i] == c) return false;
if (board[i][col] == c) return false;
if (board[3 * (row / 3) + i / 3][3 * (col / 3) + i % 3] ==
c) return false;
return true;
Explanation:
Backtracking tries digits 1-9 in empty cells, validating constraints.