class Solution {
public:
void solveSudoku(vector<vector<char> > &board) {
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(int k=1;k<=9;k++)
{
board[i][j]='0'+k;
if(valid(board,i,j)&&solve(board))
return true;
board[i][j]='.';
}
return false;
}
}
return true;
}
bool valid(vector<vector<char>>&board,int x,int y)
{
int i,j;
for(int i=0;i<9;i++)
if(board[x][i]==board[x][y]&&y!=i)
return false;
for(int j=0;j<9;j++)
if(board[j][y]==board[x][y]&&x!=j)
return false;
int a=x/3*3;
int b=y/3*3;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
if(a+i!=x&&j+b!=y&&board[i+a][j+b]==board[x][y])
return false;
}
return true;
}
};
Sudoku Solver
最新推荐文章于 2024-04-23 11:00:25 发布