是的,我知道这不是什么新鲜事,而且已经有很多问题(它甚至有自己的标签),但我想用 Java 创建一个数独求解器,只是为了训练自己编写更多的代码高效的。
在程序中执行此操作的最简单方法可能是通过大量的 for 循环解析每一列和每一行,收集每个单元格的可能值,然后以一种可能性(无论它们是否只包含 1 个数字,或者它们是行/列中唯一包含此数字的单元格),直到您解决了难题。当然,对动作的纯粹思考应该在每个程序员的脑海中升起一面红旗。
我正在寻找的是以最有效的方式解决这个傻瓜的方法(请尽量不要包含太多代码 - 我想自己弄清楚那部分)。
如果可能的话,我想避免使用数学算法——那些太容易了,而且 100% 不是我的工作。
如果有人可以提供一个逐步、有效的思维过程来解决数独难题(无论是由人还是计算机),我会非常高兴:)。我正在寻找一些模糊的东西(所以这是一个挑战),但信息量足够大(所以我并没有完全迷失)让我开始。
非常感谢,
贾斯蒂安·迈耶
编辑:
看着我的代码,我开始思考:存储这些求解状态(即数独网格)的一些可能性是什么。我想到了 2D 阵列和 3D 阵列。哪个可能是最好的?2D 可能更容易从表面管理,但 3D 阵列也会提供“盒子”/“笼子”编号。
编辑:
没关系。我将使用 3D 数组。