[LeetCode]37. Sudoku Solver

AI 自动生成商业计划书:AIGC 如何助力创业者? 在创业的早期阶段,商业计划书(Business Plan)是至关重要的。它不仅用于吸引投资者、明确发展路径,还能帮助团队对业务模式、市场定位和财务预测有清晰认知。然而,撰写一份高质量的商业计划书往往需要投入大量时间和精力。如今,AIGC(AI Generated Content,人工智能生成内容)技术正在改变这一现状。借助 AIGC,创业者可以更快速、高效地创建商业计划书,并通过 AI 进行优化和数据分析。 阅读详情

37. Sudoku Solver

求解数独。前两天做了验证数独那道题,当时对于遍历hash的使用有了一些感悟,但看这道题时候特别头疼。这两天HackerRank也刷了一下,对于DFS和BFS的理解加深了一些,渐渐的思路就变得清晰。其实是很暴力的解法,但把他转化为代码,对几天前的我来说还有一些难度。经过这两天的学习,总算是可以勉强完成,但参考别人的答案后,果然进步空间还比较大。

我之前的版本,dfs函数没有加入i与j两个变量,每次调用都重新扫描一遍需要填的空,这导致效率很低,引入i和j后果然好了很多。另外之前的dfs是void不返回值,通过一个cnt变量计算总共的空数,当cnt等于0时停止,但由于我们需要在中途中断dfs函数(找到正确的解时,否则答案会被填回’.’),采用void的类型也会比较难以中断。借鉴了别人的解法,让dfs返回一个值来判定是否完成整个数独,这样好了很多。

算法解释:

  • solveSudoku: 功能函数入口。
  • dfs:深度优先搜索函数。
    • 输入整个表和一个坐标。
    • 如果该坐标已有数字,搜索下一个格子j++;当j==9,说明这一排已搜索完,搜索下一排的第一个格子i++, j=0;如果所有的行都已搜索完,说明所有的格子都被正确的填入了数字,则返回true。
    • 如果该坐标下没有数字'.',从1开始填入,并验证该数字是否可行isValid(board, i, j)。如果不可行,擦除填入的数字并填入下一个数字直到9。如果可行,搜索下一个格子,并直到整张表被填完。
    • 如果一个没有填的格子所有的数字都不可行,代表之前填的数字有错,那么返回false。
  • isValid:验证某个格子里的数字是否可行,是之前验证数独的简化版,因为只用验证特定位置的数字。
class Solution {
public:
    void solveSudoku(vector<vector<char>>& board) {
        dfs(board, 0, 0);
    }

    bool dfs(vector<vector<char>>& board, int i, int j){
        if (i>=9) return true;
        if (j>=9) return dfs(board, i+1, 0);

        if (board[i][j]=='.'){
            for (int num = 1; num <= 9; num++){
                board[i][j] = (char)(num+'0');

                if(isValid(board, i, j)){
                    if(dfs(board, i, j+1)) return true;
                }

                board[i][j] = '.';
            }
        }else {
            return dfs(board, i, j+1);
        }
        return false;
    }

    bool isValid(vector<vector<char>>& board, int i, int j){
        for (int col = 0; col < 9; col++){
            if (col != j && board[i][j]==board[i][col]) return false;
        }
        for (int row = 0; row < 9; row++){
            if (row != i && board[i][j]==board[row][j]) return false;
        }
        for (int row = i / 3 * 3; row < i / 3 * 3 + 3; ++row) {
            for (int col = j / 3 * 3; col < j / 3 * 3 + 3; ++col) {
                if ((row != i || col != j) && board[i][j] == board[row][col]) return false;
            }
        }
        return true;
    }
};

Reference

http://www.cnblogs.com/grandyang/p/4421852.html

基于YOLOv8的农作物病虫害检测系统设计与实现 国内如中国农业大学的科研团队采用改进的Faster R-CNN模型对小麦病害进行检测,取得了较好的效果。农作物病虫害是影响农业生产的重要因素之一,每年因病虫害导致的农作物减产高达20%-40%。YOLO(You Only Look Once)系列算法作为目标检测领域的代表性模型,以其高效、准确的特点在众多领域得到广泛应用。YOLOv8作为该系列的最新版本,在精度和速度上都有显著提升,非常适合农作物病虫害检测这类需要实时处理的应用场景。然而,现有研究仍存在一些不足:一是模型复杂度高,难以部署到移动设备; 阅读详情

相关推荐

别再问“这游戏啥引擎做的”了,手把手教你用SteamDB一键查询(附实战案例)

本文详细介绍了如何使用SteamDB一键查询游戏引擎信息,包括Unity 3D、Unreal Engine等热门引擎的识别方法。通过实战案例和高级查询技巧,帮助玩家快速获取游戏技术底细,优化游戏体验和兼容性分析。

weixin_31412781的博客 822

【leetcode】37. Sudoku Solver 解数独

1. 题目 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 uniq...

weixin_33725807的博客 131

Xilinx Chip2Chip IP核实战:Aurora PHY通信配置与仿真避坑指南

本文深入解析Xilinx Chip2Chip IP核与Aurora PHY的通信配置与仿真优化,提供实战避坑指南。通过AXI协议转换桥实现FPGA间高速数据传输,详细讲解Aurora PHY参数设置、仿真加速技巧及常见问题解决方案,帮助工程师快速部署稳定高效的芯片间通信系统。

g5h6i7j的博客 1007

LeetCode //C - 37. Sudoku Solver

【代码】LeetCode //C - 37. Sudoku Solver。

Made in Code 1226

5分钟搞懂双目相机标定:从棋盘格到3D点云的完整流程(附Python代码)

本文详细介绍了双目相机标定的完整流程,从棋盘格准备到3D点云生成,涵盖单目标定、双目标定、立体校正、视差计算等关键步骤。通过Python代码示例,帮助读者快速掌握双目立体视觉技术,实现高精度的3D重建。特别适合机器人导航、工业检测等应用场景。

weixin_29100399的博客 588

基于stm32的数控恒压恒流电源设计方案

基于stm32的数控恒压恒流电源设计方案 基于stm32的数控恒压恒流电源设计方案 不包实物,可自己动手制作,可代做 本设计采用220V市电输入工频变压器,将220V交流电压降为24V交流电压,经过全桥整流加电容滤波,输出约32V直流电压.可调输出电压方案采用线性稳压调整器方案,即运放处于比较调整状态,运放输出驱动P型MOS管,电压输出端由电阻分压反馈至运放同相输入端,运放反相输入端由STM32单片机控制TLC5615数模转换器输入模拟电压,根据运放构成比较器原理,运放的同相端和反相端始终趋向于电压相等的特

m0_72265581的博客 7222

37. Sudoku Solver

Sudoku Solver 题目描述 代码实现37. Sudoku Solver题目描述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

I AM BACK 787

栅格数据空间叠置分析题目步骤讲解

题目: 准备工作: ①新建数据库,将实验数据导入(利于后期矢量转栅格操作,未建数据库此步骤会一直出错); ②在工具条自定义窗口勾选spacial analyst模块,在菜单栏→扩展模块,勾选spacial analyst;确保实验后面的操作可以成功。 详细操作步骤: 1.对三个方案的规划路线(line.shp)建立50m缓冲区;打开ArcMap,在ArcToolBox→分析工具→邻域分析→缓冲区,打开缓冲区工具窗口,界面设置如图:线性单位填写50米,其余默认,单击“确定”。 ...

m0_57139844的博客 8895

【leetcode】37. Sudoku Solver

网址 题目 解决数独 解法 class Solution { public void solveSudoku(char[][] board) { solve(board); } private boolean solve(char[][] board) { for(int i = 0; i &amp;lt; 9; i++){ ...

qq_37367581的博客 165

【AUTOSAR-E2E】-2.2-配置E2E:基于E2EPW配置一个TX发送的Signal Group(使用E2E Profile 2)

《共13页精讲》:此法也适用于E2E Profile 4/5/6/7/11/22 目录 1 检查CAN Matrix Arxml/DBC是否满足E2E需求 2 在DaVinci Developer中为Port添加E2E保护 3 在DaVinci Configurator settings设置 4 如何使用应用层的E2E保护 5 结尾 <--返回「Autosar_BSW高阶配置」总目录--> <--返回「Autosar_BSW高阶配置」专栏主页--> &lt.

「汽车电子助手」的博客 4219

NX二次开发新建组件

NXOpen新建组件

qq_39541524的博客 329

LeetCode 第 37 题 (Sudoku Solver)

LeetCode 第 37 题 (Sudoku Solver) 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 on...

Ivan 的专栏 1939

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LeetCode(37) Sudoku Solver

题目如下: 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

BUILD 1890

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Leetcode 37 Sudoku Solver

做了这道题,对backtracking的理解又加深了一点点。 1 每个backtracking的题目,最好都有独立判断isValid的程序,这样架构清楚。同时,valid判断函数在这里可以稍微研究一下。只要当前要判断的位置上的数值和本行没有重复,本列没有重复,九宫格没有重复就可以。一旦重复立即返回,减少判断次数。 2 backtracking的递归函数,怎么能没有返回值呢?!因为要判断递归的方

思维决定一切 9637

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Leetcode 37 Sudoku Solver

思路: 思路其实很容易想到,就是简单粗暴的试每一种可能性。每一个格子都有9种可能性。所以这边我们采用backtracking的方式。遍历矩阵,每碰到一个空格,就插入1-9(这也是一个loop),每插入一次,先要检测插入之后的矩阵是不是一个valid矩阵。如果是valid,然后就要检测当前的矩阵能否被成功解决(recursion)。因为很有可能你插入一个数,导致当前的矩阵是无解的。如果导致了矩阵无解,那么我们就要开始backtracking,将当前元素重新置为空格。直到左右的格子都被填上数字,此时代表已找出.

GoodJobJasper的博客 229

【Leetcode】37. Sudoku Solver

思路1 遍历棋盘中的每一个位置,对于空位置,把1-9都往里面填,假设当前填入1没有打破条件(横向没有重复的点,纵向没有重复的点,方格里也没重复的点),那么当前位置就填1,再找下一个空位置。 如果发现空位置找不到可以填入的元素时,就逐一往回倒退,把先前填入的元素都改回空,代码中体现在 if self.solve(board): return True...

很吵请安静 648

LeetCode37. Sudoku Solver

【代码】LeetCode37. Sudoku Solver。

叶卡捷琳堡的博客 1053

[LeetCode 37] Sudoku Solver

Write a program to solve a Sudoku puzzle by filling the empty cells. Asudoku solution must satisfyall ofthe following rules: Each of the digits1-9must occur exactlyonce in each row. Each of t...

ExcitedZhang的博客 193

leetcode记录37.Sudoku Solver

37.Sudoku Solver √ Accepted √ 6/6 cases passed (20 ms) √ Your runtime beats 48.74 % of cpp submissions √ Your memory usage beats 10.11 % of cpp submissions (15.6 MB) /* * @lc app=leetcode id=37...

我的博客 196

37. Sudoku Solver Leetcode Python

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

hyperbolechi的专栏 3355

LeetCode(37) Sudoku Solver

题目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 Val

指尖飞舞 598

【LeetCode 37】 Sudoku Solver

题目描述 Write a program to solve a Sudoku puzzle by filling the empty cells. A sudoku solution must satisfy all of the following rules: Each of the digits 1-9 must occur exactly once in each row. Each of...

iCode_girl的博客 179

Leetcode 37. Sudoku Solver 解数独

Leetcode 37. Sudoku Solver 解数独 标签: Leetcode 题目地址:https://leetcode-cn.com/problems/sudoku-solver/ 题目描述 编写一个程序,通过已填充的空格来解决数独问题。 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现...

CoderWangSon 480

[LeetCode 37] Sudoku Solver回溯解法

原题: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.解决一个数独,我认为还是比较直观的,一直觉得计算

皓波的博客 587

【LeetCode】37. Sudoku Solver 数独求解

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

编程之路 371
上一篇: 堆,堆在C++中用法
下一篇: [LeetCode]43. Multiply Strings
jinnsjj
博客等级 码龄14年 42粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值