37. Sudoku Solver
来源:互联网 发布:python http接口 编辑:程序博客网 时间:2024/06/10 04:25
# *- coding:utf-8 -*'''Write a program to solve a Sudoku puzzle by filling the empty cells.Empty cells are indicated by the character '.'.You may assume that there will be only one unique solution.思路:剪枝 使用枚举方法进行递归。 使用三个二维数组分别记录行状态、列状态、九宫格状态; 首先对已经出现的数字进行记录; 从左上角开始依次枚举每个'.'位置的取值,直到最右下角,同时检查 每一行、每一列、每一个九宫格的状态。 i/3*3+j/3表示第几个九宫格,square[i/3*3+j/3][k]表示第i/3*3+j/3 九宫格上的k数字是否已经出现,已经出现记为1,否则记为0; row[i][k]:第i行的k数字是否出现 column[j][k]:第j列的k数字是否出现'''class Solution(object): def solveWay(self,i,j): ''' i:the number of row j:the number of column board:List[List[str]] ''' # print 'i:',i if i==9: return True if j==9: #换行 return self.solveWay(i+1,0) if self.board[i][j] != '.':#数字已经存在,左移一个 return self.solveWay(i,j+1) for k in range(0,9): # print 'k:',k if self.row[i][k]==0 and self.column[j][k]==0 and self.square[i/3 * 3 + j/3][k]==0: self.board[i][j]=str(k+1) self.row[i][k]=1 self.column[j][k]=1 self.square[i/3*3+j/3][k]=1 if self.solveWay(i,j+1): return True self.board[i][j]='.' self.row[i][k]=0 self.column[j][k]=0 self.square[i/3*3+j/3][k]=0 return False def solveSudoku(self, board): """ :type board: List[List[str]] :rtype: void Do not return anything, modify board in-place instead. """ self.board = board self.row=[[0]*9 for x in range(9)] #行记录 self.column=[[0]*9 for x in range(9)] #列记录 self.square=[[0]*9 for x in range(9)] #九宫格记录 for i in range(len(self.board)): #初始化记录 for j in range(len(self.board[0])): if self.board[i][j] != '.': num=ord(self.board[i][j])-49 self.row[i][num]=1 self.column[j][num]=1 self.square[i/3*3+j/3][num]=1 #print 'row', self.row self.solveWay(0,0) # print self.board # print 'row',self.row # return self.board mys=Solution()s=[['.']*9 for x in range(9)]print ss=mys.solveSudoku(s)print s
阅读全文
0 0
- LeetCode --- 37. Sudoku Solver
- LeetCode 37.Sudoku Solver
- [Leetcode] 37. Sudoku Solver
- 37. Sudoku Solver
- 37. Sudoku Solver(Hard)
- [leetcode] 37. Sudoku Solver
- Leetcode 37. Sudoku Solver
- 37. Sudoku Solver
- leetcode 37. Sudoku Solver
- 37. Sudoku Solver
- 37. Sudoku Solver
- LeetCode 37. Sudoku Solver
- 37. Sudoku Solver
- leetcode.37. Sudoku Solver
- LeetCode-37.Sudoku Solver
- leetcode 37. Sudoku Solver
- (Leetcode)37. Sudoku Solver
- 37. Sudoku Solver
- Machine Learning In Action
- ZOJ3436 July Number 【DFS】
- HDU1301 Jungle Roads
- JAVA总结
- JAVA Instanceof 用法
- 37. Sudoku Solver
- Thread
- 事物—事物的传播性与Spring事物传播特性
- 简单明了的 NLPIR汉语分词系统 搭建流程
- HTML面试题及答案
- windows安装PanoramaTools
- 畅通工程(最小生成树&并查集)
- Java Map使用浅谈
- MaterialDesign学习篇(八),掌握RecyclerView和SwipeRefreshLayout