判断行、列、九宫格内数字是否重复。
按照行、列、九宫格进行检查即可。
bool validSudoku(const vector<vector<char>>& board) { bool used[9]; for (int i = 0; i < 9; i++) { fill(used, used + 9, false); //检查行 for (int j = 0; j < 9; j++) { if(!check(board[i][j], used)) return false; } fill(used, used + 9, false); //检查列 for (int j = 0; j < 9; j++) { if (!check(board[j][i], used)) return false; } } //检查9个格子 for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { fill(used, used + 9, false); for (int r = 3 * i; r < 3 * i + 3; r++) { for (int c = 3 * j; c < 3 * j + 3; c++) { if (!check(board[i][j], used)) return false; } } } } return true; } bool check(char ch, bool used[9]) { if (ch == ‘.‘) return true; if (used[ch - ‘1‘])return false; return used[ch - ‘1‘] = true; }
时间: 2024-10-01 04:16:46