马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
自己写了一个解数独的程序(回溯法)但是为什么没有结果?望大神指点
import sys
sys.setrecursionlimit(1000000) #例如这里设置为一百万
sudoku = [
[5,3,4,6,7,0,0,0,2],
[6,0,0,1,9,5,0,0,0],
[0,9,8,0,0,0,0,6,0],
[8,5,9,0,6,0,0,0,3],
[4,0,0,8,0,3,0,0,1],
[7,0,0,0,2,0,0,0,6],
[0,6,0,0,0,0,2,8,0],
[0,0,0,4,1,9,0,0,5],
[3,4,5,2,8,6,0,7,9]
]
def conflict(x,h,l,num):
if num in x[h]:
return False
for i in range(9):
if num == x[i][l]:
return False
start_h = h//3
start_l = l//3
list_jiugong = []
for i in range(3):
for j in range(3):
list_jiugong.append(x[start_h+i][start_l+j])
if num in list_jiugong:
return False
return True
def solve(sudoku):
for h in range(9):
for l in range(9):
if sudoku[h][l] == 0:
for num in [1,2,3,4,5,6,7,8,9]:
if conflict(sudoku,h,l,num) and solve(sudoku):
sudoku[h][l] = num
return True
sudoku[h][l] = 0
return False
return True
if solve(sudoku):
print(sudoku)
结果只有一个Process finished with exit code 0 并没有打印Sudoku?请大神指点,谢谢
|