37. Sudoku Solver
来源:互联网 发布:mac用什么炒股软件 编辑:程序博客网 时间:2024/05/17 09:12
这道题让填数独。
我能想到最坏的方法是,回溯,遍历所有的空白格子,填上一个数字,然后遍历他所在的这一行,这一列,这一宫,看是否可以。所以需要一个单独的isValid函数。
class Solution {public: void solveSudoku(vector<vector<char>>& board) { if(board.empty() || board[0].empty()) return; helper(board, 0, 0); } bool helper(vector<vector<char>>& board, int i, int j){ if(i >= 9) return true; if(j >= 9) return helper(board, i+1, 0); if(board[i][j] == '.'){ for(int k = 1; k <= 9; ++k){ board[i][j] = '0' + k; if(isValid(board, i, j) == true){ if(helper(board, i, j+1) == true) return true; } board[i][j] = '.'; } } else{ return helper(board, i, j+1); } return false; } bool isValid(vector<vector<char>>& board, int i, int j){ for(int k = 0; k < 9; ++k){ if(k != i && board[k][j] == board[i][j]) return false; } for(int k = 0; k < 9; ++k){ if(k != j && board[i][k] == board[i][j]) return false; } for(int ki = 3 * (i/3); ki < 3*(i/3) + 3; ++ki){ for(int kj = 3 * (j/3); kj < 3*(j/3) + 3; ++kj){ if((i != ki || j != kj) && board[ki][kj] == board[i][j]) 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
- 链表(2)
- Keras+anaconda (win) 安装
- shell中test命令
- 习题7-4 切断圆环链(Cutting Chains, ACM/ICPC World Finals 2000, UVa818)
- float编码方式
- 37. Sudoku Solver
- 【主题OJ发布】hz2016评测
- Unity--UI控件
- 机器学习实战学习笔记(六)分类—利用AdaBoost元算法提高分类性能(python3实现)
- py必须知道的干货-1
- msp430g2553 time1
- 黑客界“两会”的演讲稿与开源工具
- 20171026memo
- python 读取中文文件名/中文路径