github项目地址:https://github.com/Xcodingman/sudo.git
配置环境:windows10 vs2013
打开工程文件,运行相对应的cpp文件即可
1.数独解题与出题算法
一、基于递归回溯法的数独解题算法
思路:众所周知,数独一般的解法需要用到很多次的推导,对各行各列各个九宫格进行排查,删选候选数后挑选候选数最少的去填。仿照这样的思想,我们用C++模拟这样的思路去解一个数独。流程图如下:
具体实现:
1.预处理
考虑到更好的表示数独中1到9九个数字,我们采用一个9*9的二维数组去表示一个数独,它的每一个元素用一个9位的二进制数表示,每一位的1表示这个位置序号在侯选数组里面,具体如下表格所示。预处理函数(代码中的init函数)的作用是把输入的数独矩阵进行转换,如果是0,则换成