《programming for the puzzled》第14章
涉及到的算法:全局变量,集合和集合操作。使用递归进行搜索。
游戏规则:9×9的格子,用1-9一共9个数去填格子,使得每行,每列,以及每个3×3的区域都含有1-9这9个数字。其中一些格子已经包含了数字。
基本解决方法:猜一个数,看是否满足条件。不满足,换另一个。
1 | # 《programming for the puzzled》实操 |
上述解法并没有考虑利用输入的所有信息,比如如上图中第二行和第三行都有8了,而在3×3的小方格中,只有中间那个小方格还没有8,所以第一行的8一定在中间小格,因此只能在第5列的位置。
下面是优化后的数独解法
1 | backtracks2 = 0 |
空间换效率啊,代码比前一个复杂很多。
本文代码:https://github.com/zwdnet/MyQuant/blob/master/44/14
我发文章的三个地方,欢迎大家在朋友圈等地方分享,欢迎点“在看”。
我的个人博客地址:https://zwdnet.github.io
我的知乎文章地址: https://www.zhihu.com/people/zhao-you-min/posts
我的微信个人订阅号:赵瑜敏的口腔医学学习园地