1. 题目描述
编写一个程序,通过填充空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
空白格用 '.' 表示。
  1. 题解
深度优先搜索
  1. 代码
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 解数独相关推荐

  1. Java实现 LeetCode 37 解数独

    37. 解数独 编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实 ...

  2. LeetCode—37. 解数独(困难)

    37. 解数独(困难) 题目描述: 编写一个程序,通过填充空格来解决数独问题. 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 ...

  3. LintCode 802. 数独(回溯)/ LeetCode 37. 解数独

    1. 题目 编写一个程序,通过填充空单元来解决数独难题. 空单元由数字0表示. 你可以认为只有一个唯一的解决方案. LeetCode 37 题类似,把 int 改成 char,注意转换 2. 解题 行 ...

  4. leetcode 37. 解数独 思考分析

    目录 题目 核心思路的不断细化 1.核心框架 2.考虑到每个位置的工作 3.考虑到到达最后一列.该位置的数已经预置的情况 4.判断是否符合规则的函数 5.确定递归终止条件+确定函数返回值 AC代码 题 ...

  5. LeetCode 37. 解数独

    一.题目描述 编写一个程序,通过填充空格来解决数独问题. 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 ...

  6. LeetCode 37. 解数独 Sudoku Solver

    编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 3x3 ...

  7. 递归生成数独java_[leetcode] 37. 解数独(Java)(dfs,递归,回溯)

    1A 这个题其实15分钟左右就敲出来并且对了...但是由于我输错了一个数..导致我白白debug一个多小时.. 没啥难度,练递归-dfs的好题 class Solution { private int ...

  8. Leetcode算法Java全解答--37. 解数独

    Leetcode算法Java全解答–37. 解数独 文章目录 Leetcode算法Java全解答--37. 解数独 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 编写一个 ...

  9. LeetCode高频题37. 解数独

    LeetCode高频题37. 解数独 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目 互联网大厂们在公司养了一大批ACM竞赛的 ...

最新文章

  1. vmware 添加 磁盘 空间
  2. 一口气看完 45 个寄存器,CPU 核心技术大揭秘
  3. pytorch 笔记:gather 函数
  4. hibernate级联的概念
  5. Tornado/Python 学习笔记(一)
  6. 学习Spring Boot:(二)启动原理
  7. 10W 赞的程序员高薪职业建议
  8. python 给类添加属性_python – 如何动态添加属性到类中?
  9. java canvas 动态画图_canvas前端动图如何实现
  10. 201521123097《Java程序设计》第五周学习总结
  11. Introduction to Computer Networking学习笔记(二十九):DHCP
  12. 三角形旋转css_三种纯CSS实现三角形的方法
  13. 【智慧农业】智慧温室建造流程
  14. 单元测试、集成测试、系统测试、回归测试、用户验收测试简介
  15. 全面解析流式大数据实时处理技术、平台及应用
  16. Django站内消息通知
  17. 真王服务器文件,3方位对比谁是2015级真王 唐斯vs波神各有优势
  18. Today今天便利店的梦想:准独角兽的雄心与挑战
  19. python下载网页上的文件_用Python下载一个网页保存为本地的HTML文件实例
  20. 基于PostGIS叠加分析优化--气象预警分析案例实践

热门文章

  1. 测视力距离5米还是3米_7岁男孩近视猛涨300度!眼科专家提醒:保护孩子视力这一点很关键...
  2. 天津大学计算机非全日制录取名单,天津大学法律硕士拟录取名单(非全日制).xls...
  3. 内存检测_Android native内存检测工具介绍
  4. OpenCV中绘制外围矩形框和圆框
  5. 液滴型单细胞测序技术比较(二)
  6. Digital Text Animations for Mac - 未来感活力全屏标题动画fcpx插件
  7. 干货!无需任何工具,实测macOS双开微信客户端
  8. 10000个科学难题书籍介绍
  9. 1.13编程基础之综合应用 45 十进制到八进制 python
  10. 第29课 布纳特老师出的难题 《小学生C++趣味编程》