java编写一个程序创建一个9*9数独,如果输入的数组满足一个9*9数独,则输出“yes”,反之则输出“no”(输入数独的每个数均为个位数且属于数之间没有空格)
时间: 2023-06-07 19:07:29 浏览: 42
好的,我了解了您的要求和问题,请稍等片刻。下面是一个Java程序,可以校验输入的数独是否合法:
```
import java.util.HashSet;
public class SudokuChecker {
public static void main(String[] args) {
int[][] sudoku = new int[][]{{5,3,0,0,7,0,0,0,0},
{6,0,0,1,9,5,0,0,0},
{0,9,8,0,0,0,0,6,0},
{8,0,0,0,6,0,0,0,3},
{4,0,0,8,0,3,0,0,1},
{7,0,0,0,2,0,0,0,6},
{0,6,0,0,0,0,2,8,0},
{0,0,0,4,1,9,0,0,5},
{0,0,0,0,8,0,0,7,9}};
boolean isValid = isValidSudoku(sudoku);
if (isValid) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
public static boolean isValidSudoku(int[][] board) {
HashSet<String> set = new HashSet<>();
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
int num = board[i][j];
if (num != 0) {
if (!set.add(num + "row" + i) ||
!set.add(num + "column" + j) ||
!set.add(num + "block" + i / 3 + j / 3)) {
return false;
}
}
}
}
return true;
}
}
```
程序中创建了一个 `isValidSudoku` 方法来校验输入的数独是否合法,方法中使用了一个 HashSet 来记录每行、每列、每个九宫格中出现的数字情况。具体实现细节可以参考代码中的注释。