首先粘贴我的GitHub网址:https://github.com/bit1120161907/shuduku09
先说下我的心路历程,这是我第一次接触这样的作业,需要用到GitHub这样的平台,还要用到命令行,用不同于网教的方式去验收,而且还要独立完成。我认为这对于我来说是一个挑战,而有难度的地方不在于生成数独或者解数独,而在于上述这些第一次接触的事物。
在讲代码之前说下,我传到GitHub上的是vs的整个项目,内涵源代码,就不粘贴源码了。
先讲下生成数独,我采用的是网上大多数人采用的替换法,大概就是第一行除了要求的第一个数不变外,剩余八个数用其他数字替换形成新的数独,这里就是8!种大概4w种,再将456行、789行随机交换位置,这里就是3!*3!种,两次相乘就已经有140w种了。生成全排列我是用的库函数,再加上参考沈帝的方法,代码写的非常简洁,而且效果不错。
接下来是解数独,解数独我用的是dfs,有想过用其他方法,但是想来想去还是暴力最直接,而且时间也不算多。只过我还是优化了一下,先把能填入的数字找出来存上,就不用每次判断都要遍历。