编写一个程序,通过填充空格来解决数独问题。

数独的解法需 遵循如下规则:

数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)
数独部分空格内已填入了数字,空白格用 '.' 表示。


思路:1、题目中提到只有一个符合条件的结果,也就是说一旦找到符合的就返回,无需遍历完整个树,用bool作为返回值;

2、3*3的格子依据是将9*9划分成9块区域;

3、不需要写终止条件的原因我觉得是对于这块9*9的区域,已经用i,j的方法去遍历了,找完了都不符合就false,找到符合的就return true,如果9*9的格子遍历完了也没有返回false,于是返回true。

class Solution {
public:bool isValid(int row,int col,char k,vector<vector<char>>& board){//检验行是否符合规则for(int i=0;i<9;i++){if(board[row][i]==k)    return false;}//检验列是否符合规则for(int i=0;i<9;i++){if(board[i][col]==k)    return false;}//检验3*3宫内是否符合规则//将这个9*9的board划分成9个3*3的int x=row/3,y=col/3;for(int i=x*3;i<x*3+3;i++){for(int j=y*3;j<y*3+3;j++){if(board[i][j]==k)  return false;}}return true;}bool backtracking(vector<vector<char>>& board){//终止条件 不需要的原因是找不到'.'自然就结束了//处理 对这个9*9的空间处理for(int i=0;i<9;i++){for(int j=0;j<9;j++){   if(board[i][j]=='.'){for(char k='1';k<='9';k++){if(isValid(i,j,k,board)){board[i][j]=k;if(backtracking(board)) return true;board[i][j]='.';}}return false;}}}//9*9的格子遍历完了也没有返回false,于是返回truereturn true;}void solveSudoku(vector<vector<char>>& board) {backtracking(board);}
};

【20221119】【每日一题】解数独相关推荐

  1. 【LeetCode】第37题——解数独(难度:困难)

    [LeetCode]第37题--解数独(难度:困难) 题目描述 解题思路 代码详解 注意点 题目描述 编写一个程序,通过填充空格来解决数独问题. 数独的解法需 遵循如下规则: 数字 1-9 在每一行只 ...

  2. 2021寒假每日一题《数独检查》

    数独检查 题目来源:Google Kickstart2013 Round B Problem A 时间限制:1000ms1000ms1000ms 内存限制:64mb64mb64mb 题目描述 数独是一 ...

  3. 每日刷题之数独简单版 AcWing 1613

    数独是一种传统益智游戏,你需要把一个 9×9 的数独补充完整,使得图中每行.每列.每个 3×3 的九宫格内数字 1∼9 均恰好出现一次. 请编写一个程序填写数独. 输入格式 输入共 9 行,每行包含一 ...

  4. 每日一题——有效的数独

    菜鸡每日一题系列打卡36天 每天一道算法题目 小伙伴们一起留言打卡 坚持就是胜利,我们一起努力! 题目描述(引自LeetCode) 判断一个9x9的数独是否有效.只需要根据以下规则,验证已经填入的数字 ...

  5. leetcode刷题随笔数独是否合法利用dfs求数独的解

    最近看了一两篇关于leetcode刷题的总结,大体意思就是尽量不要使用ide(lll¬ω¬)然后默写代码保证bug free,这tm就让人很蒙蔽了,lz一直是用visual studio ,有时候程序 ...

  6. 【无聊刷题】leetCode之解数独

    题意:解数独,空缺的方格用.表示. 解法:就是典型的回溯法,用row[i][j],column[i][j],grid[i][j]表示i行,i列,i格j是否用.用flag表示当前是否有解.若有解,则不用 ...

  7. leetcode 力扣每日一题系列详解——总目录

    这是总目录,该系列持续更新中........ leetcode 力扣每日一题系列详解--总目录

  8. 【备战蓝桥】 算法·每日一题(详解+多解)-- day1

    [备战蓝桥] 算法·每日一题(详解+多解)-- day1 ✨博主介绍 什么是蓝桥杯 第一题: 第二题 第三题 第四题 第五题 第六题 第七题

  9. 【备战蓝桥杯】 算法·每日一题(详解+多解)-- day11

    [备战蓝桥杯] 算法·每日一题(详解+多解)-- day11 ✨博主介绍 前言 Dijkstra 算法 流程 网络延迟时间 解题思路 Bellman-Ford 算法 流程 K 站内最便宜的航班 解题思 ...

  10. LeetCode高频题37. 解数独

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

最新文章

  1. python for循环九九乘法表_python—用for循环、while循环和一句话打印九九乘法表
  2. 大话设计模式(十 会修电脑不会修收音机?——聊设计模式原则)
  3. 李焕英 照片动起来了?B站 up主用AI还原动态影像
  4. zbrush 添加纹理贴图_想学习3D游戏模型,3Dmax、MAYA和ZBrush都需要掌握吗?
  5. c语言 函数的参数传递示例_restder()函数,带有C ++中的示例
  6. java通信项目_Java项目中的多线程通信如何利用Socket实现
  7. PVS的内存和存储规划设计
  8. 自己动手写Docker系列 -- 5.5实现容器停止
  9. AI迎来重要发展契机,开发者的机会在哪里?
  10. 【C语言】在终端输入多行信息,找出包含“ould”的行,并打印改行。
  11. ArcGIS API 4.x 加载高德底图
  12. Lodop简短问答客户反馈篇 及排查步骤 及注册相关
  13. 2021年焊工作业压力焊考试题库
  14. ElasticSearch之QueryDSL查询语法
  15. IDEA导入JDBC驱动的jar包
  16. 如何使用adb连接Android设备?
  17. 网络存储磁带库术语解释
  18. 8大风险识别工具,轻松应对风险管理
  19. css3动画正弦曲线,css动画之模拟正余弦曲线的实例分享
  20. 怎么学大数据?该从哪学起?

热门文章

  1. 外企, 私企和国企, 不同的软件开发流程感受
  2. 用CSS实现圆角图片
  3. 浙江大学计算机科学研究生,2020年浙江大学计算机科学与技术考研经验分享
  4. 亚信电子最新AxRobot EtherCAT七轴助力控制机器手臂解决方案
  5. linux shell 数据类型,Linux Shell脚本 - 变量和数据类型
  6. 超声波焊接电源电控箱设计
  7. 科研快报 | 三代测序技术-海水微生物态,助力海水微生态及微生物基因组研究
  8. Labview视觉一键尺寸测量仪,多产品,多尺寸,快速编辑, 测量,导出结果
  9. Java学到什么程度才能叫精通?
  10. websphere上使用c3p0报错解决