【20221119】【每日一题】解数独
编写一个程序,通过填充空格来解决数独问题。
数独的解法需 遵循如下规则:
数字 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】【每日一题】解数独相关推荐
- 【LeetCode】第37题——解数独(难度:困难)
[LeetCode]第37题--解数独(难度:困难) 题目描述 解题思路 代码详解 注意点 题目描述 编写一个程序,通过填充空格来解决数独问题. 数独的解法需 遵循如下规则: 数字 1-9 在每一行只 ...
- 2021寒假每日一题《数独检查》
数独检查 题目来源:Google Kickstart2013 Round B Problem A 时间限制:1000ms1000ms1000ms 内存限制:64mb64mb64mb 题目描述 数独是一 ...
- 每日刷题之数独简单版 AcWing 1613
数独是一种传统益智游戏,你需要把一个 9×9 的数独补充完整,使得图中每行.每列.每个 3×3 的九宫格内数字 1∼9 均恰好出现一次. 请编写一个程序填写数独. 输入格式 输入共 9 行,每行包含一 ...
- 每日一题——有效的数独
菜鸡每日一题系列打卡36天 每天一道算法题目 小伙伴们一起留言打卡 坚持就是胜利,我们一起努力! 题目描述(引自LeetCode) 判断一个9x9的数独是否有效.只需要根据以下规则,验证已经填入的数字 ...
- leetcode刷题随笔数独是否合法利用dfs求数独的解
最近看了一两篇关于leetcode刷题的总结,大体意思就是尽量不要使用ide(lll¬ω¬)然后默写代码保证bug free,这tm就让人很蒙蔽了,lz一直是用visual studio ,有时候程序 ...
- 【无聊刷题】leetCode之解数独
题意:解数独,空缺的方格用.表示. 解法:就是典型的回溯法,用row[i][j],column[i][j],grid[i][j]表示i行,i列,i格j是否用.用flag表示当前是否有解.若有解,则不用 ...
- leetcode 力扣每日一题系列详解——总目录
这是总目录,该系列持续更新中........ leetcode 力扣每日一题系列详解--总目录
- 【备战蓝桥】 算法·每日一题(详解+多解)-- day1
[备战蓝桥] 算法·每日一题(详解+多解)-- day1 ✨博主介绍 什么是蓝桥杯 第一题: 第二题 第三题 第四题 第五题 第六题 第七题
- 【备战蓝桥杯】 算法·每日一题(详解+多解)-- day11
[备战蓝桥杯] 算法·每日一题(详解+多解)-- day11 ✨博主介绍 前言 Dijkstra 算法 流程 网络延迟时间 解题思路 Bellman-Ford 算法 流程 K 站内最便宜的航班 解题思 ...
- LeetCode高频题37. 解数独
LeetCode高频题37. 解数独 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目 互联网大厂们在公司养了一大批ACM竞赛的 ...
最新文章
- python for循环九九乘法表_python—用for循环、while循环和一句话打印九九乘法表
- 大话设计模式(十 会修电脑不会修收音机?——聊设计模式原则)
- 李焕英 照片动起来了?B站 up主用AI还原动态影像
- zbrush 添加纹理贴图_想学习3D游戏模型,3Dmax、MAYA和ZBrush都需要掌握吗?
- c语言 函数的参数传递示例_restder()函数,带有C ++中的示例
- java通信项目_Java项目中的多线程通信如何利用Socket实现
- PVS的内存和存储规划设计
- 自己动手写Docker系列 -- 5.5实现容器停止
- AI迎来重要发展契机,开发者的机会在哪里?
- 【C语言】在终端输入多行信息,找出包含“ould”的行,并打印改行。
- ArcGIS API 4.x 加载高德底图
- Lodop简短问答客户反馈篇 及排查步骤 及注册相关
- 2021年焊工作业压力焊考试题库
- ElasticSearch之QueryDSL查询语法
- IDEA导入JDBC驱动的jar包
- 如何使用adb连接Android设备?
- 网络存储磁带库术语解释
- 8大风险识别工具,轻松应对风险管理
- css3动画正弦曲线,css动画之模拟正余弦曲线的实例分享
- 怎么学大数据?该从哪学起?
热门文章
- 外企, 私企和国企, 不同的软件开发流程感受
- 用CSS实现圆角图片
- 浙江大学计算机科学研究生,2020年浙江大学计算机科学与技术考研经验分享
- 亚信电子最新AxRobot EtherCAT七轴助力控制机器手臂解决方案
- linux shell 数据类型,Linux Shell脚本 - 变量和数据类型
- 超声波焊接电源电控箱设计
- 科研快报 | 三代测序技术-海水微生物态,助力海水微生态及微生物基因组研究
- Labview视觉一键尺寸测量仪,多产品,多尺寸,快速编辑, 测量,导出结果
- Java学到什么程度才能叫精通?
- websphere上使用c3p0报错解决