P1784 数独 题解

本文介绍了如何使用Dancing Links X算法解决数独问题,将其转化为精确覆盖问题,并详细解释了算法的决策过程和矩阵表示。通过这种方法,可以在短时间内高效地解决数独,达到较高的运行速度。
摘要由CSDN通过智能技术生成

博客园同步

原题链接

前置知识:

浅谈 Dancing Links X \text{Dancing Links X} Dancing Links X 算法

注:这次的前置知识如果你不会又不看,代码和思路肯定都看不懂的。

简要题意:

填满一个未完成的数独。

首先数独的规则是:

  1. 每行所填数不得重复,为 1 1 1 ~ 9 9 9 之间。

  2. 每列所填数不得重复,为 1 1 1 ~ 9 9 9 之间。

  3. 每宫所填数不得重复,为 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值