LeetCode: Sudoku Solver
来源:互联网 发布:全国彩票开奖数据接口 编辑:程序博客网 时间:2024/05/21 14:49
思路:(借助网上的讨论)因为题目输入保证有且只有一个解,所以试探每一个格子的时候,只需要考虑当前行、列、矩形框满足条件,满足就进入下一个格子试探,不满足回溯。
注意判断一个格子落入哪个矩形框的设计,前面一题采用了比较trivial的方法!-_-
code:
class Solution {public: bool isValidSudoku(vector<vector<char> > &board,int row,int col){ for(int j=0;j<9;j++) if(j != col && board[row][j] == board[row][col]) return false; for(int i=0;i<9;i++) if(i != row && board[i][col] == board[row][col]) return false; int gridRow = row/3*3, gridCol = col/3*3; for(int i=0;i<3;i++) for(int j=0;j<3;j++) if(gridRow + i != row && gridCol + j != col && board[gridRow + i][gridCol + j] == board[row][col]) return false; return true; } bool solveSudokuSingle(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) && solveSudokuSingle(board)) return true; board[i][j] = '.'; } return false; } return true; } void solveSudoku(vector<vector<char> > &board) { solveSudokuSingle(board); }};
0 0
- 【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
- [Leetcode] Sudoku Solver (Java)
- 判别给定两棵二叉树是否相似
- NYOJ 845 无地之主1
- android平台——移动SNS(三)
- file的getPath getAbsolutePath和getCanonicalPath的不同
- java9:一维数组的声明,创建,初始化(single-dimensional arrays)
- LeetCode: Sudoku Solver
- snprintf() 替代 sprintf()
- POJ 1475 Pushing Boxes
- log4j之appender
- 递归算法详细分析
- LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
- mysql存储过程详解
- 程序员必须知道的10大基础实用算法及其讲解
- linux下的一些简单命令操作