class Solution {
public:
void solveSudoku(vector<vector<char> > &board) {
if(board.size()==0)return;
solve(board);
}
bool solve(vector<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(solve(board))return true;
board[i][j]='.';
}
}
return false;
}
}
}
return true;
}
bool isValid(vector<vector<char>>board,int row,int col,char c)
{
for(int i=0;i<9;i++)
{
if(board[row][i]==c||board[i][col]==c)return false;
}
int xbegin=(row/3)*3,ybegin=(col/3)*3;
for(int i=xbegin;i<xbegin+3;i++)
{
for(int j=ybegin;j<ybegin+3;j++)
{
if(board[i][j]==c)return false;
}
}
return true;
}
};
网友评论