37. Sudoku Solver
来源:互联网 发布:关于java 编辑:程序博客网 时间:2024/06/08 03:37
题目
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.
解析
题意:解一个数独,假设必定有一个解
思路:用回溯法(即试探法),与平常我们玩数据是一样的思路
* 每填入一个数字用check函数判断是否合理
* 试探的填入下一个数组,如果不合理返回至上一步
主循环是从第一个数字遍历至最后一个数字
需注意使用回溯法试探时,一般需要一个新的函数且该函数有返回值
代码
时间复杂度:O(n²)
class Solution {public: void solveSudoku(vector<vector<char>>& board){ solveSudoku(board,0); } bool solveSudoku(vector<vector<char>>& board,int position) { if(position==81) return true;; int row=position/9; int col=position%9; if(board[row][col]=='.'){ for(int k=1;k<=9;k++){ board[row][col]=(char)('0'+k); if(checkvalid(board,position)) if(solveSudoku(board,position+1)) return true; board[row][col]='.'; } } else if(solveSudoku(board,position+1)) return true; return false; } bool checkvalid(vector<vector<char>>& board,int position){ int row=position/9; int col=position%9; int k=row/3*3+col/3; int target=board[row][col]; for(int i=0;i<9;i++){ if(i!=col&&board[row][i]==target) return false; if(i!=row&&board[i][col]==target) return false; } int beginx=k/3*3; int beginy=k%3*3; for(int x=beginx;x<beginx+3;x++){ for(int y=beginy;y<beginy+3;y++){ if(x!=row&&y!=col&&board[x][y]==target) return false; } } return true; }};
阅读全文
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
- 移植u-boot-2012.04.01到jz2440开发板
- 波纹扩散特效(仿支付宝咻一咻功能)
- 贪婪的送礼者vijos
- leetcode 438. Find All Anagrams in a String 一个简单的移动窗口问题
- 局部变量和全局变量
- 37. Sudoku Solver
- 一个SoapExcept异常的处理以及.NET平台下WebService应用的一点注意事项
- 新标准大学英语综合教程2(第二版)unit1答案截图
- wannfly 挑战赛5 A
- 总结几个java面试题
- 如何调试一个TP给客户使用
- ☆【hnoi2004】L语言(题解)
- dede织梦图片集上传时提示错误信息“(FILEID:1|2|3..)的解决方法
- 算法与数据结构基础(一)排序基础1.选择排序