思路
- 按照要求判断就行
代码
bool isValidSudoku(char** board, int boardSize, int* boardColSize){
int i,j;
int flag=0;
int f[10];
memset(f, 0, sizeof(int)*10);
for(i=0;i<9;i++){
memset(f, 0, sizeof(int)*10);
for(j=0;j<9;j++){
if(isdigit(board[i][j])&&f[board[i][j]-'0']==1)
return false;
else if(board[i][j]!='.')
f[board[i][j]-'0']++;
}
}
for(i=0;i<9;i++){
memset(f, 0, sizeof(int)*10);
for(j=0;j<9;j++){
if(isdigit(board[j][i])&&f[board[j][i]-'0']==1)
return false;
else if(board[j][i]!='.')
f[board[j][i]-'0']++;
}
}
int left=0,right=3,up=0,down=3;
int k = 3;
int m = 3;
while(right<=9){
up=0,down=3;
while(down<=9){
memset(f, 0, sizeof(int)*10);
for(i=left;i<right;i++){
for(j=up;j<down;j++){
if(isdigit(board[j][i])&&f[board[j][i]-'0']==1)
return false;
else if(board[j][i]!='.')
f[board[j][i]-'0']++;
}
}
up+=3,down+=3;
}
left+=3;right+=3;
}
return true;
}