[LeetCode] Sudoku Solver
2015-09-08 17:35
399 查看
Just don't be scared by this problem :-) It's also very standard backtracking problem. This post shares a very concise code, which is rewritten below in C++.
class Solution { public: void solveSudoku(vector<vector<char>>& board) { solve(board); } private: bool solve(vector<vector<char>>& board) { for (int r = 0; r < 9; r++) { for (int c = 0; c < 9; c++) { if (board[r][c] == '.') { for (char d = '1'; d <= '9'; d++) { if (isValid(board, r, c, d)) { board[r][c] = d; if (solve(board)) return true; board[r][c] = '.'; } } return false; } } } return true; } bool isValid(vector<vector<char>>& board, int r, int c, char d) { for (int row = 0; row < 9; row++) if (board[row][c] == d) return false; for (int col = 0; col < 9; col++) if (board[r][col] == d) return false; for (int row = (r / 3) * 3; row < (r / 3 + 1) * 3; row++) for (int col = (c / 3) * 3; col < (c / 3 + 1) * 3; col++) if (board[row][col] == d) return false; return true; } };
相关文章推荐
- 数据验证,数据转换器,国际化
- 开源项目分析之UIL
- 整理白盒测试中的逻辑覆盖
- hd 1406 完数
- easyui 模糊匹配解决办法 Firefox不会自动匹配
- UTF-8编码规则(转)
- 别人的App
- iOS开发--图片美化
- Spark 性能相关参数配置详解-压缩与序列化篇
- Gym 100518E Embedding Caterpillars
- [leetcode]sort list
- ThinkPHP3.2.3 使用常量BUILD_CONTROLLER_LIST无法生成Controller
- 【面试算法系列】已知二叉树的前序和中序遍历重建二叉树 - C语言实现
- Yii Framework 开发教程(3) 为应用添加日志
- 第2周项目2--程序的多文件组织
- f:facet标签 的用法
- RCNN的安装与简单使用
- java中方法重载和重写
- 确定public继承出来的是Is_a关系(Effective C++_32)
- poj 2763 Housewife Wind 边权的树链剖分