Sudoku Solver
来源:互联网 发布:电信路由器限制端口 编辑:程序博客网 时间:2024/06/06 10:05
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.
class Solution {public:bool process(vector<vector<char> > &board, vector<vector<int> > &flag){for (int i = 0; i < 9; ++i)for (int j = 0; j < 9; ++j) { if ('.' == board[i][j]) {for (int k = 0; k < 9; ++k){int val = 1 << k;if (flag[0][i] & val || flag[1][j] & val || flag[2][(i/3)*3 + j/3] & val)continue;board[i][j] = k + '1';flag[0][i] |= val;flag[1][j] |= val;flag[2][(i/3)*3 + j/3] |= val;if (process(board, flag))return true;else{board[i][j] = '.';flag[0][i] ^= val;flag[1][j] ^= val;flag[2][(i/3)*3 + j/3] ^= val;}}return false; } }return true;} void solveSudoku(vector<vector<char> > &board) { vector< vector<int> > flag(3, vector<int>(9, 0));for (int i = 0; i < 9; i++)for(int j = 0; j < 9; j++){if ('.' == board[i][j])continue;int val = 1 << (board[i][j] - '1');flag[0][i] |= val;flag[1][j] |= val;flag[2][(i/3)*3 + j/3] |= val;}process(board, flag); }};
0 0
- Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- MBCS工程使用GetOpenFileNameW方法防止文件乱码
- dede限制下一篇上一篇的标题字数
- Oracle小记
- mininet、flowvisor以及opendaylight实验
- JDBC的简单实例
- Sudoku Solver
- C语言编程规范-注释
- hdoj 2089 & 3555 数位dp
- 大整数的乘法运算
- DeadLock Lesson
- [android UI]应用程序自适应屏幕大小
- xml学习篇(一)
- ZOJ-1053 FDNY to the Rescue!
- 得到手机上已经安装过的程序