LeetCode 37 解数独
- 题目描述
编写一个程序,通过填充空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
空白格用 '.' 表示。
- 题解
深度优先搜索
- 代码
class Solution {public:bool dfs(vector<vector<char>>& board,int index,int n,vector<vector<bool>>& row,vector<vector<bool>>& col,vector<vector<bool>>& squ,vector<pair<int,int>>& vec){if (index>=vec.size()) return true;int i=vec[index].first;int j=vec[index].second;for (int k=1;k<=n;k++){if (!row[i][k]&&!col[k][j]&&!squ[((i-1)/3)*3+(j-1)/3+1][k]){row[i][k]=true;col[k][j]=true;squ[((i-1)/3)*3+(j-1)/3+1][k]=true;board[i-1][j-1]=k+'0';if (dfs(board,index+1,n,row,col,squ,vec)) return true;board[i-1][j-1]='.';row[i][k]=false;col[k][j]=false;squ[((i-1)/3)*3+(j-1)/3+1][k]=false;}}return false;}void solveSudoku(vector<vector<char>>& board) {int n=board.size();if (n!=9) return ;vector<vector<bool>> row(n+1,vector<bool>(n+1)),col(n+1,vector<bool>(n+1)),squ(n+1,vector<bool>(n+1));vector<pair<int,int>> vec;for (int i=1;i<=n;i++){for (int j=1;j<=n;j++){if (board[i-1][j-1]!='.'){row[i][board[i-1][j-1]-'0']=true; // i行中已经有该数了col[board[i-1][j-1]-'0'][j]=true; // j列中已经有该数了squ[((i-1)/3)*3+(j-1)/3+1][board[i-1][j-1]-'0']=true; // 3*3宫内已经有该数了}else{vec.push_back({i,j});}}}dfs(board,0,n,row,col,squ,vec);}
};
LeetCode 37 解数独相关推荐
- Java实现 LeetCode 37 解数独
37. 解数独 编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实 ...
- LeetCode—37. 解数独(困难)
37. 解数独(困难) 题目描述: 编写一个程序,通过填充空格来解决数独问题. 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 ...
- LintCode 802. 数独(回溯)/ LeetCode 37. 解数独
1. 题目 编写一个程序,通过填充空单元来解决数独难题. 空单元由数字0表示. 你可以认为只有一个唯一的解决方案. LeetCode 37 题类似,把 int 改成 char,注意转换 2. 解题 行 ...
- leetcode 37. 解数独 思考分析
目录 题目 核心思路的不断细化 1.核心框架 2.考虑到每个位置的工作 3.考虑到到达最后一列.该位置的数已经预置的情况 4.判断是否符合规则的函数 5.确定递归终止条件+确定函数返回值 AC代码 题 ...
- LeetCode 37. 解数独
一.题目描述 编写一个程序,通过填充空格来解决数独问题. 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 ...
- LeetCode 37. 解数独 Sudoku Solver
编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 3x3 ...
- 递归生成数独java_[leetcode] 37. 解数独(Java)(dfs,递归,回溯)
1A 这个题其实15分钟左右就敲出来并且对了...但是由于我输错了一个数..导致我白白debug一个多小时.. 没啥难度,练递归-dfs的好题 class Solution { private int ...
- Leetcode算法Java全解答--37. 解数独
Leetcode算法Java全解答–37. 解数独 文章目录 Leetcode算法Java全解答--37. 解数独 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 编写一个 ...
- LeetCode高频题37. 解数独
LeetCode高频题37. 解数独 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目 互联网大厂们在公司养了一大批ACM竞赛的 ...
最新文章
- vmware 添加 磁盘 空间
- 一口气看完 45 个寄存器,CPU 核心技术大揭秘
- pytorch 笔记:gather 函数
- hibernate级联的概念
- Tornado/Python 学习笔记(一)
- 学习Spring Boot:(二)启动原理
- 10W 赞的程序员高薪职业建议
- python 给类添加属性_python – 如何动态添加属性到类中?
- java canvas 动态画图_canvas前端动图如何实现
- 201521123097《Java程序设计》第五周学习总结
- Introduction to Computer Networking学习笔记(二十九):DHCP
- 三角形旋转css_三种纯CSS实现三角形的方法
- 【智慧农业】智慧温室建造流程
- 单元测试、集成测试、系统测试、回归测试、用户验收测试简介
- 全面解析流式大数据实时处理技术、平台及应用
- Django站内消息通知
- 真王服务器文件,3方位对比谁是2015级真王 唐斯vs波神各有优势
- Today今天便利店的梦想:准独角兽的雄心与挑战
- python下载网页上的文件_用Python下载一个网页保存为本地的HTML文件实例
- 基于PostGIS叠加分析优化--气象预警分析案例实践
热门文章
- 测视力距离5米还是3米_7岁男孩近视猛涨300度!眼科专家提醒:保护孩子视力这一点很关键...
- 天津大学计算机非全日制录取名单,天津大学法律硕士拟录取名单(非全日制).xls...
- 内存检测_Android native内存检测工具介绍
- OpenCV中绘制外围矩形框和圆框
- 液滴型单细胞测序技术比较(二)
- Digital Text Animations for Mac - 未来感活力全屏标题动画fcpx插件
- 干货!无需任何工具,实测macOS双开微信客户端
- 10000个科学难题书籍介绍
- 1.13编程基础之综合应用 45 十进制到八进制 python
- 第29课 布纳特老师出的难题 《小学生C++趣味编程》