判斷簡單的數獨 java實現
阿新 • • 發佈:2018-11-19
問題說明
我們實現是簡化的數獨,即數字全部輸入後,看數獨是否正確
程式碼
public class Progarm04 {
public static void main(String[] args) {
int[][] grid = readASoulution();
System.out.println(isValid(grid)?"Valid solution":"Invalid solution");
}
private static boolean isValid(int[][] grid) {
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid.length; j++) {
if(grid[i][j]<1||grid[i][j]>9 || !isValid(i,j,grid))
return false;
}
}
return true;
}
private static boolean isValid(int i, int j, int[][] grid) {
for (int col = 0; col < 9; col++) {
if(col != j && grid[i][col]==grid[ i][j])
return false;
}
for (int row = 0; row < 9; row++) {
if(row != i&& grid[row][j] == grid[i][j])
return false;
}
for (int row = (i/3)*3; row < (i/3)*3+3; row++) {
for (int col = (j/3)*3; col < (j/3)*3+3; col++) {
return false;
}
}
return true;
}
private static int[][] readASoulution() {
Scanner input = new Scanner(System.in);
System.out.println("Enter a Sudoku puzzle solution:");
int [][] grid = new int [9][9];
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid.length; j++) {
grid[i][j] = input.nextInt();
}
}
return grid;
}
}