题目
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.
直接根据游戏要求,测试一下即可
代码:
class Solution {
int flag[9]; //标记相应的序号出现情况
public:
void initial() //初始化
{
for(int i=0;i<9;i++)
flag[i]=0;
}
bool isValidSudoku(vector<vector<char> > &board) {
int id;
int i,j,k,l;
for(i=0;i<9;i++) //行
{
initial();
for(j=0;j<9;j++)
if(board[i][j]!='.'&&++flag[board[i][j]-'1']!=1)
return false;
}
for(i=0;i<9;i++) //列
{
initial();
for(j=0;j<9;j++)
if(board[j][i]!='.'&&++flag[board[j][i]-'1']!=1)
return false;
}
for(i=0;i<3;i++) //九宫格
for(j=0;j<3;j++)
{
initial();
for(k=0;k<3;k++)
for(l=0;l<3;l++)
if(board[3*i+k][3*j+l]!='.'&&++flag[board[3*i+k][3*j+l]-'1']!=1)
return false;
}
return true;
}
};
本文提供了一种通过检查行、列及九宫格内数字是否重复来验证数独有效性的算法实现。该方法适用于部分填充的数独板,并且不考虑数独是否可解,仅验证已填充的部分。
1214

被折叠的 条评论
为什么被折叠?



