好吧,我承认这个数独的图不好弄,建图建了好久,才想到每一行就四个结点,数独转化为精确覆盖问题的方法还是参照Knuth的论文,如果读取到一个格子是空的,那么加9行,分别表示这个格子填1到9这9个数字,如果读取到的格子是一个数字,那么就加一行就可以了,然后列有9*9*4列,前81列表示这一行表示填的是第i行第j列的格子,接下来81列表示第i行填写k,接下来81列表示第j列填写k,最后81列表示对应九宫格填写k。转化为精确覆盖之后,直接跑dlx的dfs就可以了,主要还是建图,对于3076的16*16做法如出一辙。
我的代码:
3074:
3076: