前两天被一个小伙伴问到一个填数游戏,就是在一个9*9的方格里每行填入1~9的某个排列,使得每列和每宫也都是由1~9组成。
当时就觉得这不就是按个试嘛,人工解决的话有点智能的地方就是在试的过程中排除掉不可能的结果。我觉得严格的推理可以填出来几个空。
不过自己懒得算了,打算编码实现。
我大致说一下思路:用全排列函数生成符合要求的排列,然后存储的动态二维数组里面,再然后就是关键了:9层循环暴力解决,按个搜索是不是要找的key。当然期间要加入限定条件实现剪枝操作。要不时间会爆掉的!!!
运行结果前9行的乘积是未用回溯法的比较次数。