传送门:https://leetcode.com/problems/valid-sudoku/
问题解析:这里的valid并不要求一定能解出来,只要满足每一横行、每一纵行、每一个方格内不存在相等的元素就可以。
单元方格很明显是以3为单位的,求出商和余数后遍历九次就可以。
AC代码:
class Solution
{
public:
bool check(int x,int y,vector<vector<char> >& board)
{
for(int i=0;i<9;i++)
if(i!=x && board[i][y]==board[x][y]) return false;
//check for the row
for(int i=0;i<9;i++)
if(i!=y && board[x][i]==board[x][y]) return false;
//check for the line
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if(board[x/3*3+i][y/3*3+j]==board[x][y] && x!=x/3*3+i && y!=y/3*3+j)
return false;
//check for the unit
return true;
}
bool isValidSudoku(vector<vector<char> >& board)
{
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
if(board[i][j]=='.') continue;
if(!check(i,j,board)) return false;
}
}
return true;
}
};
本文介绍了一种检查数独是否有效的算法实现。该算法通过遍历数独的每个元素,并检查其所在行、列及所属的3x3宫格中是否存在重复数字来判断数独的有效性。代码使用C++编写,提供了详细的实现步骤。
1754

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



