Python 2.7 解决数独难题的困难

Python 2.7 解决数独难题的困难,python-2.7,Python 2.7,我一直在用python解决一个数独难题。我正在使用回溯错误的方法来解决它。我的代码正确地实现了这个方法,最多可以实现一些元素。但是在一些元素之后,它不会移动到下一个空单元格来实现它,但它在那个特定的单元格中停留。我认为我检查某个位置上的值是否有效的功能工作正常。我无法找出我所犯的错误。有人能帮我一下吗 代码: 您的回溯永远不会起作用,因为您在外循环的末尾无条件地向i添加1。我想你应该把这个增量放在一个else块中,附加到if上面: if sudoku[blankRow[i],blankCol[

我一直在用python解决一个数独难题。我正在使用回溯错误的方法来解决它。我的代码正确地实现了这个方法,最多可以实现一些元素。但是在一些元素之后,它不会移动到下一个空单元格来实现它,但它在那个特定的单元格中停留。我认为我检查某个位置上的值是否有效的功能工作正常。我无法找出我所犯的错误。有人能帮我一下吗

代码:


您的回溯永远不会起作用,因为您在外循环的末尾无条件地向i添加1。我想你应该把这个增量放在一个else块中,附加到if上面:

if  sudoku[blankRow[i],blankCol[i]] == 9 and valid != 1:
    print 'entered' #invalid,i:',i,'j',j,'row:',blankRow[i],'col:',blankCol[i]
    sudoku[blankRow[i],blankCol[i]] = 0
    i-= 1 
else:         # add this!
    i+=1      # indent this!

请注意,如果代码遇到无法解决的难题,您可能需要添加一些额外的检查以使代码正常运行。在这种情况下,我会变得消极,因为它会回到第一个位置。这实际上不会立即导致错误,因为您可以使用负值为列表或数组编制索引,但在多次尝试并未能再次解决此难题后,最终会引发异常。

尝试单步执行代码并找出问题的确切位置。
if  sudoku[blankRow[i],blankCol[i]] == 9 and valid != 1:
    print 'entered' #invalid,i:',i,'j',j,'row:',blankRow[i],'col:',blankCol[i]
    sudoku[blankRow[i],blankCol[i]] = 0
    i-= 1 
else:         # add this!
    i+=1      # indent this!