Dance Linking
很早就想写下Dance Linking了。那个时候用一般的搜索方法解了数独。之后在网上看到说能用 Knuth 发明的 Dance Linking 高效地解决。所以找了一些资料来看(当然也包括momodi的《Dancing Links 在搜索中的应用》)。最后看懂了,但是不知道怎么构造这个十字链表 T_T 。后来不知怎么地就不了了之了。 现在重新来看还是很容易就看懂了,不过构造十字链表还是有点困难。现在比起以前网上关于dance Linking的资料多了。遂,寻一参考之。^_^
链接如下: http://hi.baidu.com/ofeitian/blog/item/f761ef16d36f330f4b90a7ff.html
链表的题目本来就没写过多少,双向链表的插入都显得十分生疏,总结下:
如果要在链尾插入元素,则先更新链尾的指针,后再更新链头的指针。因为我们要靠链头指针找到原来的链尾,先更新的话就找不到了。
最后,感觉可以加个行指针。因为n可以达到1000左右,那样使行的删除时间大大减少。不过没时间了, 要比赛了。以后有时间再优化吧。
补充一下: 行最多可达到500,列最多为900。我这个程序耗时大约为360ms。