资 源 简 介
说明
数独作为深受广大用户喜爱的数学智力游戏,有着其独到的魅力和乐趣。对于编程人员而言,其算法的实现与效率也是个值得讨论和研究的话题,本着对数独的兴趣和个人的研究,在此发布可扩充的数独的生成与求解,普通的数独为9*9宫格,本项目提供的是基于n(n>=2)的数独研究以供大家参考、学习与交流。
设计思路
作为一个可扩充的数独实现,不仅仅是数字上的扩充,还包括求解的可扩展性。整个项目的核心是围绕数独的数据结构来实现的,基于数独的平面表示,在java中使用二维数组(two-dimension array)来描述数独的数据结果,对应的就是项目中的NPalace 类。这个类中重要的就是nsize的概念,对应的就是数独中每行的小宫格的数目,比如9宫格的数独其nsize就是3,这个nsize是可以任意设置的。该类也提供了很多常用的方法来获取数据,如下:
```
// 构造方法
public static NPalace newInstance(); // 创建默认的9宫格数独
public static NPalace newInstance(int nsize); // 创建指定大小的数独
// 设置和获取某个位置的值,其中palaceIndex指每个小宫格的索引,从0开始;有palaceIndex参数的方法中的
// x,y参数表示的是该小宫格的坐标(左上角为(0,0));没有的则是整个大宫格的坐标位置;
public boolean setValue(int palaceIndex, int x, int y, int value);
public boolean setValue(int x, int y, int value);
public int getValue(int palaceIndex, int x, int y);
public int getValue(int x, int y);
// 获取某个小宫格的值,第一个方法中的x,y是对整个大宫格而言的坐标,返回包含该位置的小宫格的数组值;