Write a program to solve a Sudoku puzzle by filling the empty cells.
Empty cells are indicated by the character '.'
.
You may assume that there will be only one unique solution.
A sudoku puzzle...
...and its solution numbers marked in red.
Difficulty:Hard
</pre><pre name="code" class="cpp">class Solution {
public:
bool isValidSudoku(vector<vector<char> >& board,int i, int j) {
for(int k = 0;k<9;k++)
{
if(board[i][k]==board[i][j]&&k!=j)
return false;
if(board[k][j]==board[i][j]&&k!=i)
return false;
}
for(int x = (i/3)*3;x<=(i/3)*3+2;x++)
for(int y = (j/3)*3;y<=(j/3)*3+2;y++)
if(board[x][y]==board[i][j]&&x!=i&&y!=j)
return false;
return true;
}
bool sudo(vector<vector<char>>& board){
for(int i = 0;i<9;i++)
for(int j = 0;j<9;j++)
{
if(board[i][j]=='.')
{
for(int k = 1;k<=9;k++)
{
board[i][j] = '0'+k;
if(isValidSudoku(board,i,j)&&sudo(board))
return true;
board[i][j] = '.';
}
return false;
}
}
return true;
}
void solveSudoku(vector<vector<char>>& board) {
sudo(board);
}
};