LeetCode(37) Sudoku Solver
2024-09-08 08:17:45
题目
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…
分析
与36 Valid Sudoku本质相同的题目,上一题要求判定所给九宫格能否满足数独要求,本题要求给定唯一解。
所采取基本方法 — 遍历 , 遍历整个9*9宫格每一元素,对所有的 ′.′ 分别判定1~9是否满足要求,对于判定,我们采用上一题的思路,但是此时只需判定当前位置所在行、列、及3*3块是否满足要求即可。
AC代码
class Solution {
private:
const int N = 9;
public:
void solveSudoku(vector<vector<char>>& board) {
if (board.empty())
return;
isValidSudoku(board);
}
bool isValidSudoku(vector<vector<char> > &board)
{
//所给非空九宫格
for (int r = 0; r < N; r++)
{
for (int c = 0; c < N; c++)
{
//如果当前为待填充数字
if ('.' == board[r][c])
{
for (int i = 1; i <= 9; i++)
{
board[r][c] = i + '0';
//判断当前填充数字是否合理
if (judge(board, r, c))
{
if (isValidSudoku(board))
return true;
}//if
board[r][c] = '.';
}//for
return false;
}//if
}//for
}//for
}//isValid
//判断当前row,col中所填数字是否合理,只需要判断当前行,当前列,以及当前所在的3*3块
bool judge(vector<vector<char> > &board, int row, int col)
{
//(1)判断当前行
for (int j = 0; j < N; j++)
{
if (col != j && board[row][j] == board[row][col])
return false;
}
//(2)判断当前列
for (int i = 0; i < N; i++)
{
if (row != i && board[i][col] == board[row][col])
return false;
}//for
//(3)判断当前3*3块
for (int i = row / 3 * 3; i < (row / 3 + 1) * 3; ++i)
{
for (int j = col / 3 * 3; j < (col / 3 + 1) * 3; ++j)
{
if (row != i && j != col && board[row][col] == board[i][j])
return false;
}//for
}//for
return true;
}
};
最新文章
- 第六百一十天how can I 坚持
- Unity Assets目录下的特殊文件夹名称
- 理解TCP可靠的通信
- 非spring环境中配置文件工具
- 设计模式(九):Composite组合模式 -- 结构型模式
- docker私服
- ios UIKit动力
- ssm+maven多模块项目整合
- 笔记3 装配Bean总结
- selenium+谷歌无头浏览器爬取网易新闻国内板块
- nginx学习路线
- java 图片转base64字符串、base64字符串转图片
- 如何获取view的大小
- Python技术之书籍汇总
- 20165223 结对编程之四则运算week2-整体总结
- java中equals()和==的区别
- C++ STL基本容器的使用(vector、list、deque、map、stack、queue)
- $.ajax的一些总结
- DELL平板如何安装WIN10系统-磁盘分区问题
- b4
热门文章
- Oracle 查询约束信息
- 关于C_Cpp的一些小结
- 自己写一个websocket
- centos7上使用locate命令-文件查找
- bzoj1878 [SDOI2009]HH的项链【莫队】
- 数论/暴力 Codeforces Round #305 (Div. 2) C. Mike and Frog
- 题解报告:poj 2480 Longge&#39;s problem(欧拉函数)
- MyBatsi-Mapper映射文件
- 数字(number)
- jQuery选择器之表单元素选择器