Leetcode #37 Sudoku Solver
2015-08-31 08:59
267 查看
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.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Sudoku-by-L2G-20050714.svg/250px-Sudoku-by-L2G-20050714.svg.png)
A sudoku puzzle...
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/31/Sudoku-by-L2G-20050714_solution.svg/250px-Sudoku-by-L2G-20050714_solution.svg.png)
...and its solution numbers marked in red.
Difficulty:Hard
Empty cells are indicated by the character
'.'.
You may assume that there will be only one unique solution.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Sudoku-by-L2G-20050714.svg/250px-Sudoku-by-L2G-20050714.svg.png)
A sudoku puzzle...
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/31/Sudoku-by-L2G-20050714_solution.svg/250px-Sudoku-by-L2G-20050714_solution.svg.png)
...and its solution numbers marked in red.
Difficulty:Hard
</pre><pre name="code" class="cpp">class Solution { public: bool isValidSudoku(vector<vector<char> >& board,int i, int j) { for(int k = 0;k<9;k++) { if(board[i][k]==board[i][j]&&k!=j) return false; if(board[k][j]==board[i][j]&&k!=i) return false; } for(int x = (i/3)*3;x<=(i/3)*3+2;x++) for(int y = (j/3)*3;y<=(j/3)*3+2;y++) if(board[x][y]==board[i][j]&&x!=i&&y!=j) return false; return true; } bool sudo(vector<vector<char>>& board){ for(int i = 0;i<9;i++) for(int j = 0;j<9;j++) { if(board[i][j]=='.') { for(int k = 1;k<=9;k++) { board[i][j] = '0'+k; if(isValidSudoku(board,i,j)&&sudo(board)) return true; board[i][j] = '.'; } return false; } } return true; } void solveSudoku(vector<vector<char>>& board) { sudo(board); } };
相关文章推荐
- C的xml编程-libxml2(函数总结篇) http://blog.sina.com.cn/s/blog_6a1837e90100ns9j.html
- Java基础知识强化11:多态的两道基础题
- sitemesh学习
- Gradle 1.12用户指南翻译——第四十一章. 项目报告插件
- 一步步开发自己的博客 .NET版(1、基本显示)
- Gradle 1.12用户指南翻译——第四十一章. 项目报告插件
- Netty系列之Netty高性能之道
- Django之第一个app<19>
- Java就业指导
- POJ 3461 Oulipo KMP
- 浅谈下java泛型
- 数据下载-block 形式的异步请求
- 如何生成多叉树,以构建树形结构需要的数据
- Gradle 1.12用户指南翻译——第四十章. ANTLR 插件
- SDUT-3311-买糖-KMP应用
- Gradle 1.12用户指南翻译——第四十章. ANTLR 插件
- (ios开发)基本数据类型和结构体的封装与解封
- java 访问的权限
- 你所不知道的Activity转场动画——ActivityOptions
- CoreAnimation-06-CAKeyframeAnimation