有谁知道一个简单的算法来检查数独配置是否有效?我想出的最简单的算法是(对于大小为 n 的板)伪代码
for each row
for each number k in 1..n
if k is not in the row (using another for-loop)
return not-a-solution
..do the same for each column
但我很确定一定有更好的(在更优雅的意义上)解决方案。效率其实并不重要。
您需要检查数独的所有约束:
- 检查每一行的总和
- 检查每列的总和
- 检查每个框的总和
- 检查每行是否有重复的数字
- 检查每列上是否有重复的数字
- 检查每个盒子上是否有重复的数字
总共 6 次检查..使用暴力方法。
如果您知道棋盘的尺寸(即 3x3 或 9x9),则可以使用某种数学优化
Edit:对总和约束的解释:首先检查总和(如果总和不是 45,则停止)比检查重复项要快得多(也更简单)。它提供了一种丢弃错误解决方案的简单方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)