[Leetcode]_37 Sudoku Solver
来源:互联网 发布:婚纱摄影 知乎 编辑:程序博客网 时间:2024/06/03 16:20
/** * Index: 37 * Title: Sudoku Solver * Author: ltree98 **/
刚刚做了一个检查数独是否合法。
这次,就是来解这个数独了。
用的最简单最暴力的办法 —— 回溯
- 遍历数独,从左至右,从上到下的顺序
- 遇到数字,过
- 遇到非数字,开始准备填数
- 从1-9开始填(判断填上去是否合规则)
- 有合规则的,继续向后遍历
- 如果没有合规则的,说明前面有填错的,回到上一层向下重填
- 从1-9开始填(判断填上去是否合规则)
class Solution {private: bool isLegal(vector<vector<char>>& board, int row, int col, char number) { int s = row/3*3 + col/3; for(int i = 0; i < 9; i++) if(board[i][col] == number) return false; for(int j = 0; j < 9; j++) if(board[row][j] == number) return false; int sR = row - row%3, sC = col - col%3; for(int i = 0; i < 3; i++) for(int j = 0;j < 3; j++) if(board[sR+i][sC+j] == number) return false; return true; } bool traversalSudoku(vector<vector<char>>& board, int row, int col) { if(col > 8) { ++row; col = 0; } if(row > 8) return true; if(board[row][col] == '.') { for(char num = '1'; num <= '9'; num++) { if(isLegal(board, row, col, num)) { board[row][col] = num; if(traversalSudoku(board, row, col+1)) { return true; } board[row][col] = '.'; } } return false; } return traversalSudoku(board, row, col+1); }public: void solveSudoku(vector<vector<char>>& board) { traversalSudoku(board, 0, 0); }};
阅读全文
0 0
- [Leetcode]_37 Sudoku Solver
- 【LeetCode】Valid Sudoku && Sudoku Solver
- [Leetcode]Sudoku Solver&&Valid Sudoku
- leetcode Valid Sudoku & Sudoku Solver
- Leetcode 37 Sudoku Solver
- [Leetcode] Sudoku Solver
- Leetcode 37: Sudoku solver
- LeetCode Sudoku Solver
- [LeetCode]Sudoku Solver
- Leetcode Sudoku Solver
- LeetCode-Sudoku Solver
- LeetCode - Sudoku Solver
- LeetCode:Sudoku Solver
- 【leetcode】Sudoku Solver
- Leetcode: Sudoku Solver
- leetcode Sudoku Solver
- LeetCode | Sudoku Solver
- LeetCode Sudoku Solver
- <<JavaScript高级程序设计>>读书笔记
- 浅谈扩展欧几里得
- UML关系(泛化,实现,依赖,关联(聚合,组合))
- ReadWriteLock使用示例
- c++随机数简单用法
- [Leetcode]_37 Sudoku Solver
- 【荐读】我观察14年才发现,那些很努力却没成就的人都有一个特点
- ubuntu 16.04 安装 xgboost python运行环境
- django后台和app客户端的搭建指南(python,android)。模拟手机获取验证码的请求
- Chrome 常用快捷键
- EL,jstl,OGNL表达式
- github错误:Permission denied to deploy key......
- java对象和Map之间互相转换的三种实现方式
- 调度线程池ScheduledThreadPool使用示例