class Solution {
public:
// use use[] flag judge
bool isValidSudoku(vector<vector<char>>& board) {
const int row=9;
const int col=9;
int isused[9];
// 每一行是否重复
for(int i=0;i<row;++i){
memset(isused,0,sizeof(isused));
for(int j=0;j<col;++j){
if(check(board[i][j],isused)){
return false;
}
}
}
// 每一列是否重复
for(int i=0;i<row;++i){
memset(isused,0,sizeof(isused));
for(int j=0;j<col;++j){
if(check(board[j][i],isused)){
return false;
}
}
}
// 3*3 方框进行检查
for(int i=0;i<3;++i){
for(int j=0;j<3;++j){
memset(isused,0,sizeof(isused));
for(int m=3*i;m<3*i+3;++m){
for(int n=3*j;n<3*j+3;++n){
if(check(board[m][n],isused)){
return false;
}
}
}
}
}
return true;
}
// 进行flag 检查
bool check(char ch,int isused[]){
if(ch=='.'){
return false;
}
// 检查是否被使用
if(isused[ch-'1']){
return true;
}
isused[ch-'1']=true;
return false;
}
};