当某一列,某一行或某一宫里已填7个数字时,可采用排除法,排除不可能出现在这个格子的数,从而确定格子里应该填什么数。比如某一行已填1,3,4,5,7,8,9,还剩2,6,而其中一个空格所在的列上已有了2,可知这个空格里不可能是2,那么另外一个空格里一定是2,那么这个空格里一定是6。
当某一列,某一行或某一宫里已填6个数字时,也可采用排除法。
最简单的排除法..找个图解就好了.
数独被证明为NP完全问题,也就是说不可能有仅通过推理,而不需要搜索就能解出所有数独的算法。
数独的搜索一般是把数独归约为精确覆盖问题,然后使用DancingLinks。你可以查一下DancingLinks算法,解数独非常快
瞎猜的:
1. 采用穷举算法算出某个组合,然后从里面按照设定,比如每行抠几个数字,每烈抠几个数字出去
2. 我觉得这种排列是有限的,或者就是把这几种有限的组合全部输进程序,然后把数组顺时针转90°,逆时针转90°,左右翻转,上下翻转等方式,从而得到看起来好像不同的组合
贴一个数独的C++源码
http://www.daniweb.com/forums/thread48788.html