java判断数独的解是否正确
时间: 2024-12-08 22:23:00 浏览: 18
在Java中,判断一个数独的解是否正确通常涉及遍历整个9x9的棋盘,检查每行、每列以及每个3x3的小宫格内数字是否唯一,且范围从1到9。以下是一个简单的步骤描述:
1. 定义三个循环:外层两层分别遍历行和列,内层循环用于3x3小宫格。
2. 对于每一个单元格,首先确认它已经填充了数字(非0)。
3. 检查该数字是否已经在当前行、列和小宫格内出现过。如果出现多次,则说明不是有效解。
4. 使用`HashSet`或数组等数据结构存储已知的数字,避免重复检查。
5. 如果所有单元格都通过了上述检查,那么这个数独就是有效的。
以下是一个简化版伪代码示例:
```java
boolean isValidSudoku(int[][] sudoku) {
Set<Integer>[] rowSet = new HashSet[9];
Set<Integer>[] colSet = new HashSet[9];
Set<int[]> boxSet = new HashSet<>();
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
int num = sudoku[i][j];
if (num == 0) continue; // 空单元格跳过
// 检查行、列
if (!rowSet[i].add(num) || !colSet[j].add(num)) return false;
// 计算所在宫格的索引
int boxRow = i / 3 * 3;
int boxCol = j / 3 * 3;
if (!boxSet.add(new int[]{num, boxRow, boxCol})) return false;
}
}
return true;
}
```
阅读全文