有喜欢数独的吗?

有喜欢数独的吗?

问题描述:

有喜欢数独的吗?最近在做毕业设计,数独解题方面的。

我有这样的想法,不知道能成不:我读进来一个int型的二维数组,把它转换为String型的,然后计算每个非1个数字的宫格的候选数,再通过删减候选数以及不断的修正可能性表解题。我的想知道是通过正则来计算候选数字快还是逐行、列、宫遍历快啊?(注意,这个删减候选数以及修正可能性表可能是很多次的重复,回溯,知道解出答案或者宣布无解为止)

PS:我对正则在工作时的内存管理不熟悉,请勿见笑。

遍历快,只要你的算法不是太糟糕。

正则无非是把算法放在字符串里而已,正则表达式引擎解析了字符串,翻译成算法,结果还是做遍历。

追求速度的话用C写,用一个unsigned int代表一个格子里的候选集,1到9位分别代表1到9,
然后集合的交并补都可以通过位运算符实现,比String,Set,Array等数据结构都快得多。

在drools的官方代码里,有这么一个例子,就是解决数独的。
使用了JAVA,SWING,Drools 实现的。

请看《编程之美》里面的介绍。