bool isValid(std::vector<std::vector<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;
}
int r1=row/3;
int l1=col/3;
for(int j=0;j<3;j++){
for(int k=0;k<3;k++){
if(board[3*r1+j][3*l1+k]==c)
return false;
}
}
return true;
}
bool solve1(std::vector<std::vector<char>> &board){
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
if(board[i][j]=='.'){
for(char c='1';c<='9';c++){
if(isValid(board,i,j,c)){
board[i][j]=c;
if(solve1(board))return true;
else
board[i][j]='.';
}
}
return false;
}
}
}
return true;
}
void solveSudoku(std::vector<std::vector<char>>& board) {
solve1(board);
}