用C++写一个程序:数独是一种智力游戏。给定 9×9个整数构成的矩阵,请验证这些整数的排列方式是否符合数独的条件。一个合法的数独要求矩阵在每一行、每一列、每个宫都含有 11 到 9的全部数字。所谓宫是指矩阵前三行、中三行、后三行与前三列、中三列、后三列组成的九个3×3 的小矩阵。
时间: 2024-09-15 20:13:25 浏览: 240
在C++中编写一个数独验证程序,你可以首先创建一个函数来检查单个单元格是否满足规则,然后遍历整个矩阵应用这个检查。这里是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
// 检查一个数字是否在当前行、列以及宫内唯一
bool isValid(int num, int row, int col, std::vector<std::vector<int>>& sudoku) {
// 检查行
for (int i = 0; i < 9; ++i) {
if (sudoku[row][i] == num)
return false;
}
// 检查列
for (int j = 0; j < 9; ++j) {
if (sudoku[i][col] == num)
return false;
}
// 宫内的检查
int box_row = row - row % 3;
int box_col = col - col % 3;
for (int i = box_row; i < box_row + 3; ++i) {
for (int j = box_col; j < box_col + 3; ++j) {
if (sudoku[i][j] == num)
return false;
}
}
return true;
}
// 验证整个数独矩阵
bool isSudokuValid(std::vector<std::vector<int>>& sudoku) {
for (int i = 0; i < 9; ++i) {
for (int j = 0; j < 9; ++j) {
if (!isValid(sudoku[i][j], i, j, sudoku))
return false;
}
}
return true;
}
int main() {
std::vector<std::vector<int>> sudoku(9, std::vector<int>(9)); // 初始化一个9x9的矩阵
// ... 填充数独矩阵
bool isValidated = isSudokuValid(sudoku);
if (isValidated)
std::cout << "数独有效。\n";
else
std::cout << "数独无效。\n";
return 0;
}
```
阅读全文