【leetcode】Valid Sudoku
来源:互联网 发布:蚂蚁代理浏览器软件 编辑:程序博客网 时间:2024/06/03 23:46
问题:
在Sudoku Solver 中说道,会有一些提示解,这里就是验证下给定的提示解是否合法,即已经填加的数是否满足要求的三个条件。
bool isValidSudoku(vector<vector<char> > &board) { const int M = 9;//9 * 9const int hash_len = 60;//'0' = 48 + 10const char dot = '.';//check rows for(int i = 0; i < M; ++i){ bool rows[hash_len] = {false}; bool cols[hash_len] = {false}; for(int j = 0; j < M; ++j){ if(board[i][j] != dot) { if(rows[board[i][j]]) return false; else rows[board[i][j]] = true; } }} //check cols for(int i = 0; i < M; ++i){ bool rows[hash_len] = {false}; for(int j = 0; j < M; ++j){ if(board[j][i] != dot) { if(rows[board[j][i]]) return false; else rows[board[j][i]] = true; } }}//check inner boxes. 9 * (3 * 3)const int N = 3;for(int ibox = 0; ibox < M; ++ibox){bool box[hash_len] = {false};for (int irow = 0; irow < N; ++irow){for (int icol = 0; icol < N; ++icol){if(board[ibox/N*N + irow][ibox%N*N + icol] != dot &&box[board[ibox/N*N + irow][ibox%N*N + icol]])return false;if(board[ibox/N*N + irow][ibox%N*N + icol] != dot)box[board[ibox/N*N + irow][ibox%N*N + icol]] = true;}}}return true;}
这个代码没进行简化,显得很繁琐,这里只是为了明了思路。
0 0
- 【LeetCode】Valid Sudoku && Sudoku Solver
- [Leetcode]Sudoku Solver&&Valid Sudoku
- leetcode Valid Sudoku & Sudoku Solver
- LeetCode : Valid Sudoku
- [LeetCode]Valid Sudoku
- [leetcode] Valid Sudoku
- LeetCode-Valid Sudoku
- LeetCode Valid Sudoku
- LeetCode - Valid Sudoku
- LeetCode:Valid Sudoku
- leetcode-036:Valid Sudoku
- Leetcode: Valid Sudoku
- LeetCode题解:Valid Sudoku
- 【LeetCode】 Valid Sudoku
- Leetcode Valid Sudoku
- LeetCode | Valid Sudoku
- LeetCode Valid Sudoku
- [Leetcode] Valid Sudoku (Java)
- Matlab实现Butterworth滤波器
- Java中extends与implements的区别
- tac命令的实现
- 配置文件被编辑后,vim打开每行都有^M
- java面试笔试题整理
- 【leetcode】Valid Sudoku
- c语言头文件中函数是否加extern
- zoj3791(An Easy Game) DP
- 随机带权选取文件中一行
- struts2中的constant配置详解
- 开放寻址法PYTHON实现
- Maximum Depth of Binary Tree
- 转:linux中oracle的日常维护命令
- QT里Enter快捷键的设置