題目
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.
The Sudoku board could be partially filled, where empty cells are filled with the character '.'.

A partially filled sudoku which is valid.
Note:A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
分析
就是需要判斷9個橫行,9個豎行,和9個方框沒有重復的數(shù)字。當然一個一個判斷是可以,但是可以找到其中的規(guī)律,具體參考代碼。
bool isValidSudoku(char** board, int boardRowSize, int boardColSize) {
bool answer=true;
int temp[10]={0};
//判斷橫行
for(int i=0;i<9;i++)
{
for(int k=0;k<10;k++)
temp[k]=0;
for(int j=0;j<9;j++)
{
if(board[i][j]!='.')
{
if(temp[board[i][j]-'0']==0)
{
temp[board[i][j]-'0']=1;
}
else
{
answer=false;break;
}
}
}
}
//判斷豎行
for(int i=0;i<9;i++)
{
for(int k=0;k<10;k++)
temp[k]=0;
for(int j=0;j<9;j++)
{
if(board[j][i]!='.')
{
if(temp[board[j][i]-'0']==0)
{
temp[board[j][i]-'0']=1;
}
else
{
answer=false;break;
}
}
}
}
//9個方框
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
for(int k=0;k<10;k++)
temp[k]=0;
int left[9] ={0+3*i,0+3*i,0+3*i,1+3*i,1+3*i,1+3*i,2+3*i,2+3*i,2+3*i};
int right[9]={0+3*j,1+3*j,2+3*j,0+3*j,1+3*j,2+3*j,0+3*j,1+3*j,2+3*j};
for(int k=0;k<9;k++)
{
if(board[left[k]][right[k]]!='.')
{
if(temp[board[left[k]][right[k]]-'0']==0)
{
temp[board[left[k]][right[k]]-'0']=1;
}
else
{
answer=false;break;
}
}
}
}
}
return answer;
}