酷代码 AI
菜单
全部AI  /  热门  /  AI问答
服务商

用c++实现: 喵际数独锦标赛即将在喵市举行,为了比赛的公平公正,作为大赛的技术支持喵,你被委托开发一个自动评判系统,用于快速验证参赛喵提供的数独解答是否正确。 参赛喵的数独解答为一个 9×9 的数字网格,每个格子为 1 到 9 之间的整数。 系统需要验证解答是否满足标准数独规则: a. 每一行包含 1 到 9 的所有数字,不重复; b. 每一列包含 1 到 9 的所有数字,不重复; c. 每个宫(将行分为三组,每组三行,将列分为三组,每组三列,构成的九个 3×3 的子网格,称为九个宫)包含 1 到 9 的所有数字,不重复; 若解答完全正确,输出 Yes ,否则输出 No。 输入格式 共 9T+1 行: 第一行一个整数 T ,表示有 T 个待评判的数独; 每一个数独包含 9 行,每行 9 个数字,表示参赛喵的数独解答。 输出格式 共 T 行: 对于每一个数独输出一行,若解答完全正确,输出 Yes ,否则输出 No。

```cpp #include <iostream> #include <vector> bool checkRow(std::vector<std::vector<int>>& board, int row) { std::vector<bool> used(10, false); for (int col = 0; col < 9; col++) { int num = board[row][col]; if (num < 1 || num > 9 || used[num]) { return false; } used[num] = true; } return true; } bool checkCol(std::vector<std::vector<int>>& board, int col) { std::vector<bool> used(10, false); for (int row = 0; row < 9; row++) { int num = board[row][col]; if (num < 1 || num > 9 || used[num]) { return false; } used[num] = true; } return true; } bool checkBox(std::vector<std::vector<int>>& board, int startRow, int startCol) { std::vector<bool> used(10, false); for (int row = startRow; row < startRow + 3; row++) { for (int col = startCol; col < startCol + 3; col++) { int num = board[row][col]; if (num < 1 || num > 9 || used[num]) { return false; } used[num] = true; } } return true; } bool isSudokuValid(std::vector<std::vector<int>>& board) { for (int i = 0; i < 9; i++) { if (!checkRow(board, i) ||!checkCol(board, i)) { return false; } } for (int row = 0; row < 9; row += 3) { for (int col = 0; col < 9; col += 3) { if (!checkBox(board, row, col)) { return false; } } } return true; } int main() { int t; std::cin >> t; while (t--) { std::vector<std::vector<int>> board(9, std::vector<int>(9)); for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { std::cin >> board[i][j]; } } if (isSudokuValid(board)) { std::cout << "Yes" << std::endl; } else { std::cout << "No" << std::endl; } } return 0; } ``` [2025-05-16 16:46:31 | AI问答 | 666点数解答]

相关提问