如何构建我的程序以返回递归函数的成功输出?

时间:2015-04-30 02:13:13

标签: java algorithm recursion sudoku

我正在制作数独求解器(没有算法的演练/作弊)。基本上,我的假设功能如下:

  1. 以网格作为参数,使用基本逻辑(依赖于它们只是一个可能的值的位置)来尽可能地解决它而不需要猜测/做更复杂的逻辑。
  2. 一旦到达没有明显值的点,找到n(通常为2)的最小可能性的单元格,克隆网格n次并将可能性替换为单元格,然后再为每个新网格调用该函数。
  3. 如果网格出现矛盾,请终止该函数调用。
  4. 如果网格已解决,请将类变量solvedGrid[][]设置为等于已解算的网格。
  5. 在此设置中,我将创建类,调用该函数,然后从solvedGrid[][]字段中检索答案。我的递归函数本身有一个void返回,或者我可以使它boolean以确定找到解决方案。无论哪种方式,我都想不出返回byte[][]的方法,因为我将从1个函数实例多次调用该函数。提前谢谢。

    (另外,对于那些创建了这样一个程序的人来说 - 我提出的算法实际上会起作用吗?)

1 个答案:

答案 0 :(得分:1)

返回solveGrid,如果发现矛盾,则返回null。不需要将返回值作为类成员,我甚至会说糟糕的设计。 是的,你的算法听起来不错。在数独网格空间中进行深度优先搜索。