前置知识:
浅谈 Dancing Links X \text{Dancing Links X} Dancing Links X 算法
注:这次的前置知识如果你不会又不看,代码和思路肯定都看不懂的。
简要题意:
填满一个未完成的数独。
首先数独的规则是:
-
每行所填数不得重复,为 1 1 1 ~ 9 9 9 之间。
-
每列所填数不得重复,为 1 1 1 ~ 9 9 9 之间。
-
每宫所填数不得重复,为 1 1 1 ~ 9 9 9 之间。
首先这是一个数学游戏,但是如果你想在 1 s 1s 1s 之内 AK \text{AK} AK 吊打全场,那么就要学习如何解决数独问题。
下面我们来说说,怎么把它扯到 精确覆盖 上面呢。
决策应该是形如 ( i , j , x ) (i,j,x) (i,j,x) 的三元组,表示 a i , j = x a_{i,j} = x ai,j=x.
第 i i i 行只能用一个 x x x,需要 9 × 9 = 81 9 \times 9 = 81 9×9=81 列。(每个格子都要开一列,对应 1 1 1 ~ 81 81 81 列)
第 j j j 列只能用一个 x x x ,再开 9 × 9 = 81 9 \times 9 = 81 9×9=81 列。(每个格子都要开一列,对应 82 82 82