软件工程基础——个人项目——数独(2)
生成终局理论算法
一:第一行的确定
第一个数字为(9+6)% 9 + 1 = 7;
其余八个数字为1~6,8,9的随机排序,共8!种
二:终局的确定
1:从网上查阅资料得知,如果从第二行开始,每行为第一行左移3、6、1、4、 7、2、5、8的结果,则生成的结果为合格的数独终局
2:随意交换数独的1、2、3行,4、5、6行,7、8、9行,或者交换1、2、3列,4、5、6列,7、8、9列并不会影响数独的合格性。但在交换行的基础上交换列可能产生与已生成结果相同的情况,过列与行的交换不能同时采用。此外若不固定第一行或第一列仍可能出现相同的结果,故采用行交换时应固定第一行不动。
数独的理论解法
计算机解数独的方法我所能掌握并实现的只有深度搜索。但数独的深度遍历运算量必定很大,在具体实现时应该考虑剪枝等优化操作。