本帖最后由 qaz123765 于 2017-7-7 00:47 编辑
- shud=[
- [0,0,8,0,0,0,2,0,0],
- [0,3,0,8,0,2,0,6,0],
- [7,0,0,0,9,0,0,0,5],
- [0,5,0,0,0,0,0,1,0],
- [0,0,4,0,0,0,6,0,0],
- [0,2,0,0,0,0,0,7,0],
- [4,0,0,0,8,0,0,0,6],
- [0,7,0,1,0,3,0,9,0],
- [0,0,1,0,0,0,8,0,0]]
- def uniq(m,n,val):
- for r in shud[m]:
- if r==val:
- return False
- for c in shud:
- if c[n]==val:
- return False
- rx,cx=m//3*3,n//3*3
- for i in range(rx,rx+3):
- for rc in shud[i][cx:cx+3]:
- if rc==val:
- return False
- return True
- def nextc(m,n):
- for mmn in range(n+1,9):
- if shud[m][mmn]==0:
- return m,mmn
- for mn in range(m+1,9):
- for nn in range(0,9):
- if shud[mn][nn]==0:
- return mn,nn
- return -1,-1
- def tryl(m,n):
- if shud[m][n]==0:
- for k in range(1,10):
- if uniq(m,n,k):
- shud[m][n]=k
- nextm,nextn=nextc(m,n)
- if nextm==-1 and nextn==-1:
- return True
- else:
- valu=tryl(nextm,nextn)
- if not valu:
- shud[m][n]=0
- else:
- return True
- for i in range(9):
- for j in range(9):
- if shud[i][j]==0:
- break
- break
- tryl(i,j)
- print(shud)
复制代码 |