class Solution {
private:
bool sove(vector<vector<char>>&board)
{
for(int i=0;i<board.size();i++)
{
for(int j=0;j<board[0].size();j++)
{
if(board[i][j]=='.')
{
for(char c='1';c<='9';c++)
{
if(isvalid(board,i,j,c))
{
board[i][j]=c;
if(sove(board))
return true;
else
board[i][j]='.';
}
}
return false;
}
}
}
return true;
}
bool isvalid(vector<vector<char>>&board,int i,int j,char c)
{
//cheak rows
for(int row=0;row<9;row++)
{
if(board[row][j]==c)
return false;
}
//cheak columns
for(int columns=0;columns<9;columns++)
{
if(board[i][columns]==c)
return false;
}
//cheak the square area
for(int row=(i/3)*3;row<(i/3)*3+3;row++)
for(int column=(j/3)*3;column<(j/3)*3+3;column++)
{
if(board[row][column]==c)
return false;
}
return true;
}
public:
void solveSudoku(vector<vector<char>>& board) {
if(board.size()==0)
return;
sove(board);
}
};
37. Sudoku Solver
最新推荐文章于 2021-02-23 11:16:49 发布