在学习《java语言程序设计·基础篇》二维数组的时候看到一道例题,过程简单,但是对我有些启发,特此记录。
九宫格是一个9×9的网格,它被分为更小的3×3的盒子。将从1到9的数字置入一些称为固定方格的格子里。该程序的目标是将从1到9的数字植入哪些称为自由方格的格子,以便达到能够使得每行每列以及每个3×3的盒子都包含1到9的数字。该程序只需要验证解决方案是否可行。
该问题的一个难点是:找到每列/行/方格中的九个数字,怎样知道这九个数字就是1~9。
解决办法:将这九个数字放入数组中,进行排序,查看数组序号是否等于该位置上的数字减去1。
源程序如下:
public class CheckSudokuSolution {
public final static int NUMBEROFLINE = 9;
public final static int NUMBEROFCOLUMN = 9;
public static void main(String[] args) {
//Read a Sudoku solution
int[][] grid = readSolution();
System.out.println(isValid(grid)? "Valid solution" : "Invalid solution");
}