本题是大家学习DFS路上必不可少的一道题目
题目
本题链接P1784 数独 - 洛谷
讲解算法原理
枚举策略:
•
「⼀个格⼦⼀个格⼦」往⾥⾯填数。
•
从第⼀⾏的第⼀个格⼦开始,填上⼀个「没有冲突」的数,然后「递归」到下⼀个格⼦;
•
当某⼀⾏填满之后,递归到「下⼀⾏的起始位置」继续填数。
可以创建三个数组,⽤来帮助判断填上某⼀个数之后,是否会发⽣冲突。对于 ⽅格,我们可以
给每⼀个格⼦编上号,快读定位。
其实也就是要确保填入的数字在每一行、每一列、每个3*3格子内是没有出现过的数字
代码实现
完整代码可以参考本人gitee仓库:
DFS/数独 · 陈佳栋/o.O.c - Gitee.com
以下是部分代码讲解

这段代码是输入数字时候标记不为零的位置

这段代码是DFS的主要实现过程:其中只要出现非法的数字填入就return返回。