智星论坛(IQSTAR BBS)
 
打印

数独算法

昨天又发现了一个BUG,
函数find()中
if(class[m][t]==s){
    temps[m][t][temps_count[m]]=v;
}
temps_count[m][t]++;
后面那个temps_count[m][t]++应该移动到if里面的.
在做了这个修改后,程序搜索到解的速度明显慢了数百倍,所以看来这样简单的搜索是不行的.
需要先分类在求解才行.
0.54364331210052407755147385529445

TOP

这次这个程序应该可以了,它总共将所有情况分成4160类.
现在我这边机器的运行速度基本是每分钟计数两类,估计1天多可以算完.
程序运行方式为
./two.exe n
其中n是一个整数,可以在0到4159之间.然后从这个数字开始,一直计算到最后,当然中途随时可以将它打断,停下来.
xJCMISJ8.zip (21.06 KB)
0.54364331210052407755147385529445

TOP

一天没有去关心,结果竟然已经出来了.
结果验证完全正确,我的程序输出3546146300288
也就是128*27704267971
再加上因子9!*72^2就是最终结果了
0.54364331210052407755147385529445

TOP

当前时区 GMT+8, 现在时间是 2008-12-5 23:07

Processed in 0.047586 second(s), 8 queries, Gzip enabled.


Skin By Wing