算法分析与设计课程(8):【leetcode】Sudoku Solver
来源:互联网 发布:呼葱觅蒜用的软件 编辑:程序博客网 时间:2024/04/29 09:02
Description:
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.
A sudoku puzzle.
...and its solution numbers marked in red.
算法分析:
这题可以采用回溯法。
本题找到解的处理是return true,因此返回值为bool。
对于每个空位'.',遍历1~9,check合理之后往下一个位置递归。
由于这里路径尝试本质上是有序的,即1~9逐个尝试,因此无需额外设置状态位记录已经尝试过的方向。
注意:只有正确达到最终81位置(即成功填充)的填充结果才可以返回,若不然,将会得到错误的填充。
因此辅助函数solve需要设为bool而不是void。
代码如下:
__author__ = 'andy'class Solution: # @param board, a 9x9 2D array # Solve the Sudoku by modifying the input board in-place. # Do not return any value. def check(self, x, y, board): tmp = board[x][y] board[x][y] = '.' for row in range(9): if board[row][y] == tmp: return False for col in range(9): if board[x][col] == tmp: return False for row in range(3): for col in range(3): if board[(x / 3) * 3 + row][(y / 3) * 3 + col] == tmp: return False board[x][y] = tmp return True def dfs(self, board): for row in range(9): for col in range(9): if board[row][col] == '.': for char in '123456789': board[row][col] = char if self.check(row, col, board) and self.dfs(board): return True board[row][col] = '.' return False return True def solveSudoku(self, board): self.dfs(board)
0 0
- 算法分析与设计课程(8):【leetcode】Sudoku Solver
- LeetCode:Valid Sudoku与Sudoku Solver
- 算法分析与设计课程(3):【leetcode】Permutations
- 算法分析与设计课程(4):【leetcode】Wildcard Matching
- 算法分析与设计课程(9):【leetcode】Jump Game
- 算法分析与设计课程(10):【leetcode】Simplify Path
- 算法分析与设计课程(11):【leetcode】Gray Code
- 算法分析与设计课程(14):【leetcode】 Maximal Square
- 算法分析与设计课程(17):【leetcode】4Sum
- 算法分析与设计课程(18):【leetcode】Clone Graph
- LeetCode--Sudoku Solver(DFS)
- LeetCode(37) Sudoku Solver
- LeetCode OJ算法题(三十六):Sudoku Solver
- LeetCode 37. Sudoku Solver|DFS算法
- LeetCode OJ --问题与解答 Sudoku Solver
- 【LeetCode】Valid Sudoku && Sudoku Solver
- [Leetcode]Sudoku Solver&&Valid Sudoku
- leetcode Valid Sudoku & Sudoku Solver
- 闹钟相关设定及闹钟的息屏唤醒
- Algorithm Gossip (20) 阿姆斯壮数
- Trafodion 不挂断后台运行sql小技巧
- MQ如何快速实现流量削峰填谷
- 归并排序算法
- 算法分析与设计课程(8):【leetcode】Sudoku Solver
- python——内置类型——list tuple dict set
- 同一个世界 四维离殇 理智 攻略
- 同一个世界 四维离殇 同伴 攻略
- 同一个世界 四维离殇 历史 攻略
- 同一个世界 四维离殇 探索 攻略
- 同一个世界 四维离殇 遗迹 攻略
- 最小生成树_prim(加点)
- 一句话说清win7 64位机子上获取修改注册表项的疑惑