用二维数组标记每行,每列,每块出现的数字,重复出现则return false
(vector初始化二维数组)
bool isValidSudoku(vector<vector<char>>& board) {
vector<vector<int>> visrow(9,vector<int>(9,0)),viscol(9,vector<int>(9,0)),visblk(9,vector<int>(9,0));
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
{
if(board[i][j]!='.')
{
int num=board[i][j]-'1',k=j/3+(i/3)*3;
if(visrow[i][num]||viscol[j][num]||visblk[k][num])
return false;
visrow[i][num]=viscol[j][num]=visblk[k][num]=1;
}
}
return true;
}