有效的数独
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
//使用回溯法进行有效的数独的方法的建立过程
vector<map<char, int>> hang(9);
vector<map<char, int>> lie(9);
vector<map<char, int>> box(9);
for (int i = 0; i<9; ++i)
{
auto temp= map<char,int>();
hang[i] = temp;
lie[i] = map<char, int>();
box[i] = map<char, int>();
}
for (int i = 0; i<9; ++i)
{
for (int j = 0; j<9; ++j)
{
if (board[i][j] == '.')
continue;
if (hang[i].count(board[i][j]) == 0)
hang[i][board[i][j]] = 1;
else
++hang[i][board[i][j]];
if (lie[j].count(board[i][j]) == 0)
lie[j][board[i][j]] = 1;
else
++lie[j][board[i][j]];
int box_num = i / 3 * 3 + j / 3;
if (box[box_num].count(board[i][j]) == 0)
box[box_num][board[i][j]] = 1;
else
++box[box_num][board[i][j]];
}
}
for (int i = 0; i<9; ++i)
{
for (char j = '1'; j <= '9'; ++j)
{
if (hang[i][j] >= 2)
return false;
if (lie[i][j] >= 2)
return false;
if (box[i][j] >= 2)
return false;
}
}
return true;
}
};