本想用dfs回溯法解决数独问题的,结果发现好难,现在提供我自己的一种解法,后面有时间再用回溯法做一遍。。。。
#None代表为未确定的数据
A=[
[7,1,2,None,6,None,3,5,8],
[None,6,5,2,None,7,1,None,4],
[None,None,8,5,1,3,6,7,2],
[9,2,4,None,5,6,None,3,7],
[5,None,6,None,None,None,2,4,1],
[1,None,3,7,2,None,9,None,5],
[None,None,1,9,7,5,4,8,6],
[6,None,7,8,3,None,5,1,9],
[8,5,9,None,4,None,None,2,3]
]
def my_dfs():
global A
result=[]
ALL_SET=set({1,2,3,4,5,6,7,8,9,None})#全集
for i in range(9):
for j in range(9):
if A[i][j]==None:
d={}
set_x=set(A[i][k] for k in range(9))#横向的集合
set_y=set(A[k][j] for k in range(9))#纵向的集合
set_x_y=set_x|set_y
data=list(ALL_SET-set_x_y)#总的集合-横向纵向的集合=可能解的集合
d['%s,%s'%(str(i),str(j))]=data
result.append(d)
return re