Leetcode-Sudoku Solver
2015-07-14 20:28
288 查看
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.
题意:将一个数独补充完整。
解题思路:从第一个空格开始,列出可以填充的数字,依次进行尝试。
Empty cells are indicated by the character ‘.’.
You may assume that there will be only one unique solution.
题意:将一个数独补充完整。
解题思路:从第一个空格开始,列出可以填充的数字,依次进行尝试。
bool ss(vector<vector<char>>& b) { int ii = 0; int jj = 0; bool f = false; for (int i = 0; i < b.size(); ++i) { for (int j = 0; j < b[i].size(); ++j) { if (b[i][j] == '.') { ii = i; jj = j; f = true; break; } } if (f) { break; } } if (f) { int a[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; for (int i = 0; i < b[0].size(); ++i) { if (b[ii][i] != '.') { a[b[ii][i] - '0']++; } if (b[i][jj] != '.') { a[b[i][jj] - '0']++; } } int ib = ii / 3; ib=ib*3; int jb = jj / 3; jb=jb*3; for (int i = ib; i < ib + 3; ++i) { for (int j = jb; j < jb + 3; ++j) { if (b[i][j] != '.') { a[b[i][j] - '0']++; } } } for (int i = 1; i < 10; ++i) { if (a[i] == 0) { b[ii][jj] = i + '0'; if (ss(b)) { return true; } else { b[ii][jj] = '.'; } } } return false; } return true; } void solveSudoku(vector<vector<char>>& board) { bool f=ss(board); }
相关文章推荐
- 栈的应用
- 栈的应用
- oc知识点整理
- 数据的表示与处理
- jdbc链接sqlserver数据库的问题
- poj 2481 比壮的牛 树状数组
- XML Schema <第三篇>
- javascript基本概念
- Android MediaScanner源代码解析
- UI基础(一)
- 每天小练笔8-模拟进程调度
- 沙盒 和nsbundle
- RatingBar 在activity中代码控制监听
- 高房屋空置率反映了三大问题的性质?
- 道破Redis的VM
- 七月十四日 Linux操作系统c语言学习笔记
- 【iOS开发系列】NSSet & NSIndexSet
- 检查MySQL主从数据一致性
- 静态代码块
- Scala : 单例对象、伴生类、伴生对象