如果发现一个单元格中放置任何数字1-9都是非法移动,则解决数独难题的a brute-force algorithm实现将失败。
实现是用C语言编写的,电路板由一个9x9数组表示。解算器从9开始倒计时,直到达到一个合法的数字,如果无法达到,它将输出一个零。
零还表示要填充的单元格如果输入的是一串零(一块空板),则输出(被截断):

9 8 7 6 5 4 3 2 1
6 5 4 9 8 7 0 0 0

最后三个零是因为前面填写的值没有变化。How我能阻止解算器像这样失败吗?

最佳答案

如果你现在在一个点上放一个0,那么回到你放一个数字的前一个点,继续倒计时,直到你找到该点的另一个数值。
例如,在您的示例中:

9 8 7 6 5 4 3 2 1
6 5 4 9 8 7 0 0 0

与其把0放在3的下面,不如回去试着把6放在4的下面。

10-06 09:29