您的位置:首页 > 其它

Valid Sudoku

2013-09-30 10:41 148 查看
Q: 九宫独。

判断一个board是否是有效的九宫独。用三个二维数组标记,row,col,block:row[i][j]表示第i行数字j+1是否已经出现过,col和block数组同理。

对于board[i][j],对应的block计算是:i - i%3+j/3

bool isValidSudoku(vector<vector<char> > &board) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int n = board.size();
if(n==0)
return true;
vector<vector<bool>> row(n,vector<bool>(n,false));
vector<vector<bool>> col(n,vector<bool>(n,false));
vector<vector<bool>> block(n,vector<bool>(n,false));

for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(board[i][j]=='.') continue;
int num = board[i][j] - '1';
if(row[i][num]||col[j][num]||block[i - i % 3 + j / 3][num])
return false;
row[i][num] = col[j][num] = block[i - i % 3 + j / 3][num] = true;
}
}

return true;

}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: