有喜欢数独的吗?
问题描述:
有喜欢数独的吗?最近在做毕业设计,数独解题方面的。
我有这样的想法,不知道能成不:我读进来一个int型的二维数组,把它转换为String型的,然后计算每个非1个数字的宫格的候选数,再通过删减候选数以及不断的修正可能性表解题。我的想知道是通过正则来计算候选数字快还是逐行、列、宫遍历快啊?(注意,这个删减候选数以及修正可能性表可能是很多次的重复,回溯,知道解出答案或者宣布无解为止)
PS:我对正则在工作时的内存管理不熟悉,请勿见笑。
答
遍历快,只要你的算法不是太糟糕。
正则无非是把算法放在字符串里而已,正则表达式引擎解析了字符串,翻译成算法,结果还是做遍历。
追求速度的话用C写,用一个unsigned int代表一个格子里的候选集,1到9位分别代表1到9,
然后集合的交并补都可以通过位运算符实现,比String,Set,Array等数据结构都快得多。
答
在drools的官方代码里,有这么一个例子,就是解决数独的。
使用了JAVA,SWING,Drools 实现的。
答
请看《编程之美》里面的介绍。