LeetCode: Sudoku Solver
2014-06-22 18:52
183 查看
思路:(借助网上的讨论)因为题目输入保证有且只有一个解,所以试探每一个格子的时候,只需要考虑当前行、列、矩形框满足条件,满足就进入下一个格子试探,不满足回溯。
注意判断一个格子落入哪个矩形框的设计,前面一题采用了比较trivial的方法!-_-
code:
注意判断一个格子落入哪个矩形框的设计,前面一题采用了比较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); } };
相关文章推荐
- 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 36. Valid Sudoku 37. Sudoku Solver
- Leetcode224: Sudoku Solver
- [LeetCode 37] Sudoku Solver回溯解法
- Leetcode 37. Sudoku Solver
- Leetcode (37) Sudoku Solver
- [Leetcode 103] 37 Sudoku Solver
- leetcode第一刷_Sudoku Solver
- leetcode 37. Sudoku Solver
- leetcode: 37. Sudoku Solver
- [Leetcode] Sudoku Solver
- Leetcode-37: Sudoku Solver
- [leetcode 37]sudoku solver