这两日的工作主要是在数独求解上。
看了一下网上的方法什么跳舞链啊,各种筛选法啊,一是觉得难度较大,而是增加了额外的工作量,对整个算法的时间复杂度优化也未必能有多好。同时,网友们也说,及时是暴搜,所有问题也能在1秒之内解决。
于是打算就直接用暴搜加一点而优化。
思路是这样的,即把每个空格的地方都算一下“复杂度”--即它可能填的数字的多少,用三个一维的变量去衡量,一是行,二是列,三是宫格,先把复杂度为1的直接填好了,如果没有复杂度为1 的,就找到复杂度最小的逐个去深搜,也就是暴搜。
写了几个小时,程序跑不出来,现在也没有弄懂什么原因。于是先把纯暴搜写了一下。也出了一点儿问题,倒不是搜索的问题,前面不是说了一下check函数吗?那儿出了问题,首先返回值,每个地方都应该加1;其次,判断九个宫格出错的地方是完完全全写错了,倒是也不用改很多。等下再把check函数重新上传一下吧!
这里证明了代码的测试还是很重要的!