バックトラックを使用してすべての可能な回答を保存したい しかし、追加された答えはスドク問題と同じです。 しかし、 "alist"に追加するときに "グリッド"を印刷すると問題ありません。どのように問題を解決できますか?コメントの代わりにスードクをバックトラッキングし、リスト内のすべての可能な回答を保存する
def backtrack(grid,x,y,alist):
if x == 9:
alist.append(grid)
print(grid)
return alist
v = grid[x][y]
if v == 0:
for i in range(1,10):
check = True
if i in grid[x]:
check = False
continue
for row in range(0,9):
if i == grid[row][y]:
check = False
continue
for row in range(3*(x//3),3*(x//3)+3):
for col in range(3*(y//3),3*(y//3)+3):
if i == grid[row][col]:
check = False
continue
if check == True:
grid[x][y]= i
if y < 8:
backtrack(grid,x,y+1,alist)
else:
backtrack(grid,x+1,0,alist)
grid[x][y] = 0
return alist
else:
if y< 8:
backtrack(grid,x,y+1,alist)
else:
backtrack(grid,x+1,0,alist)
return alist
problem = [[4, 0, 3, 0, 2, 0, 6, 0, 0],
[9, 6, 0, 3, 0, 0, 0, 0, 0],
[2, 0, 1, 8, 0, 6, 0, 9, 0],
[0, 0, 8, 1, 0, 2, 9, 0, 0],
[7, 2, 0, 0, 6, 0, 0, 0, 8],
[0, 0, 6, 7, 0, 8, 2, 0, 0],
[0, 0, 2, 6, 0, 9, 5, 0, 0],
[8, 0, 0, 2, 0, 3, 0, 0, 9],
[0, 0, 5, 0, 1, 0, 3, 0, 0]]
alist = []
for a in backtrack(problem,0,0,alist):
print(a)
ありがとうございます! –