下面是一个值得思考的题目:
http://zh.wikipedia.org/wiki/数独
我正在尝试制作这个游戏的求解器。已经完成了前期工作(读取一个包含可变数量列和行的初始文件)。假设输入文件遵循游戏规则,因此游戏始终是可以解决的。请花时间阅读游戏规则。
我已经处理好了最适合的数据结构:
struct aSquare { int verticalSum; int horizontalSum; int value; }
我创建了一个“数组”来动态处理这些内容。我将黑色方块的值设为-1,白色方块(实际解决方案方块)初始化为0。您还可以轻松地从数组中获取每个aSquare结构的位置,无需为其创建额外的结构字段。
现在是算法...我该如何协调所有这些总和,并找到一种通用的方法来解决所有类型的网格。我整个下午都在苦苦挣扎,但没有结果。
欢迎提供帮助,祝愉快!
*编辑:我刚刚意识到我发布的实际链接有一些关于解决技巧的提示。尽管如此,我仍将保留此链接,以查看人们想出什么。
[计算每个字段的可能合法值]
函数。我的位置选择器用于猜测没有任何智能,实际上也不需要。公平地说,Nurikabe是一个二进制谜题,因此所有位置都同样受到限制。 - Brian