一种不用递归解决数独问题的思路

Posted nickwu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一种不用递归解决数独问题的思路相关的知识,希望对你有一定的参考价值。

 

过年放假在家,偶然看到老妈在玩数独(Sudoku),想着这完全可以写个程序解决数独问题呀,上网搜了一下大家的思路,发现代码最简单的还是递归算法,不过感觉递归算法有些无脑,运算量又大,想着自己能不能模拟一下人玩数独的思路,让计算机以相对聪明一点点的方式去计算数独的结果呢?

基本思路:对每一行,每一列和每一小九宫格作为一个单元进行分析,共有9*3=27个单元。对于这每一个单元来说,写一个函数need_what来计算一下1-9中还有哪几个数字没有用到,并找出没有填数字的位置坐标。对于每一个没有填数字的位置来说,用剩余的几个数字试着去填,当这个位置有且只有一个数字可以填入时,那么将数字填入此处,否则暂不处理。将对行、列、九宫格填数的过程放入while循环中,结束条件为九宫格全部完成。

源代码请移步GitHub:https://github.com/nickwu96/Sudoku

部分代码截图如下:

技术图片

运行截图如下:

技术图片

 

以上是关于一种不用递归解决数独问题的思路的主要内容,如果未能解决你的问题,请参考以下文章

Java中的数独求解器,使用回溯和递归

Python数独回溯

如何通过回溯和递归解决数独?

Javascript递归回溯数独求解器

无法回溯以使用递归 javascript 数独求解器

Gui 可视化递归回溯数独