Sudoku Solver
来源:互联网 发布:java程序员怎么样 编辑:程序博客网 时间:2024/06/05 18:46
题目描述:
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.
解题思路:使用回溯法AC代码如下:
class Solution {public: bool isOK(const vector<vector<char>>& board, const vector<int>& positions,int index){int row = positions[index] / 9;int col = positions[index] % 9;int count[10] = { 0 };for (int i = 0; i < 9; i++){if (board[row][i] != '.'){int num = board[row][i] - '0';count[num]++;if (count[num]>1 && num>0){return false;}}}int count2[10] = { 0 };for (int i = 0; i < 9; i++){if (board[i][col] != '.'){int num = board[i][col] - '0';count2[num]++;if (count2[num]>1 && num>0){return false;}}}int count3[10] = { 0 };int a = row / 3;int b = col / 3;for (int i = 0; i < 9; i++){int c = i / 3;int d = i % 3;char tmp = board[3 * a + c][3 * b + d];if (tmp != '.'){int num = tmp - '0';count3[num]++;if (count3[num]>1 && num>0){return false;}}}return true;}void solveSudoku(vector<vector<char>>& board){int n = 0;vector<int> values;vector<int> positions;for (int i = 0; i < 9; i++)for (int j = 0; j < 9; j++){ if (board[i][j] == '.'){ n++; board[i][j] = '0'; values.push_back(0); positions.push_back(9 * i + j); }}int index = 0;while (index >= 0){values[index]++;board[positions[index] / 9][positions[index] % 9]++;while (values[index] < 10 && !isOK(board, positions, index)){values[index]++;board[positions[index] / 9][positions[index] % 9]++;}if (values[index] >= 10){values[index] = 0;board[positions[index] / 9][positions[index] % 9] = '0';index--;}else{if (index == n - 1){return;}else{index++;}}}}};
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
- mysql的知识
- cocoa pods 安装
- mysql5.7设置简单密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
- Windows 7下硬盘安装Ubuntu 14.04注意事项
- SSM框架——详细整合教程
- Sudoku Solver
- 全选---打牢基础 是深入编程的前提
- Handler的post(Runable r)方法
- 数字图像处理经典论文汇总
- Android系统架构的详细解析
- RxBinding的使用
- linux 系统ssh端口的开启及关闭与系统硬件的查看
- 字符编码笔记:ASCII,Unicode和UTF-8
- picker自定义高度