判断简单的数独 java实现

问题说明

我们实现是简化的数独,即数字全部输入后,看数独是否正确

代码

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;
}
}

猜你喜欢

转载自blog.csdn.net/qq_40435621/article/details/83754009