LeetCode--37. 解数独(回溯算法) 37. 解数独题目描述编写一个程序通过填充空格来解决数独问题。数独的解法需遵循如下规则数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。请参考示例图数独部分空格内已填入了数字空白格用.表示。示例 1输入board [[5,3,.,.,7,.,.,.,.],[6,.,.,1,9,5,.,.,.],[.,9,8,.,.,.,.,6,.],[8,.,.,.,6,.,.,.,3],[4,.,.,8,.,3,.,.,1],[7,.,.,.,2,.,.,.,6],[.,6,.,.,.,.,2,8,.],[.,.,.,4,1,9,.,.,5],[.,.,.,.,8,.,.,7,9]] 输出[[5,3,4,6,7,8,9,1,2],[6,7,2,1,9,5,3,4,8],[1,9,8,3,4,2,5,6,7],[8,5,9,7,6,1,4,2,3],[4,2,6,8,5,3,7,9,1],[7,1,3,9,2,4,8,5,6],[9,6,1,5,3,7,2,8,4],[2,8,7,4,1,9,6,3,5],[3,4,5,2,8,6,1,7,9]] 解释输入的数独如上图所示唯一有效的解决方案如下所示提示board.length 9board[i].length 9board[i][j]是一位数字或者.题目数据保证输入数独仅有一个解代码classSolution{/** * 判断当前位置填入数字 k 是否合法 * * param row 当前行 * param column 当前列 * param k 当前尝试填入的数字 * param board 当前数独棋盘 */publicbooleanisValid(introw,intcolumn,chark,char[][]board){/** * 检查同行、同列 * * 数独规则 * 同一行、同一列不能出现重复数字 */for(inti0;i9;i){// 同行存在重复if(board[row][i]k){returnfalse;}// 同列存在重复if(board[i][column]k){returnfalse;}}/** * 检查 3 × 3 九宫格 */// 当前九宫格左上角坐标introwStartrow/3*3;intcolumnStartcolumn/3*3;// 遍历当前九宫格for(intirowStart;irowStart3;i){for(intjcolumnStart;jcolumnStart3;j){// 九宫格中存在重复数字if(board[i][j]k){returnfalse;}}}// 当前位置合法returntrue;}/** * 回溯函数 * * 返回值 * true - 找到正确解 * false - 当前路径失败 */publicbooleanbacktracking(char[][]board){/** * 遍历整个棋盘 */for(inti0;i9;i){for(intj0;j9;j){/** * 找到空格 */if(board[i][j].){/** * 尝试填入 1 ~ 9 */for(chark1;k9;k){/** * 如果当前数字合法 */if(isValid(i,j,k,board)){// 做选择填入数字board[i][j]k;// 递归下一层booleanresultbacktracking(board);/** * 如果后续成功 * 直接返回 true */if(resulttrue){returntrue;}/** * 回溯 * 当前数字不行恢复为空格 */board[i][j].;}}/** * 1~9 都尝试失败 * * 说明当前路径无解 */returnfalse;}}}/** * 没有找到空格 * * 说明整个棋盘已经填完 * 找到正确答案 */returntrue;}publicvoidsolveSudoku(char[][]board){// 启动回溯backtracking(board);}}

相关新闻

最新新闻

【AIGC内容工业化标准】:基于1276组AB测试验证的ChatGPT创意写作提示词评分模型(附可下载打分表)

【AIGC内容工业化标准】:基于1276组AB测试验证的ChatGPT创意写作提示词评分模型(附可下载打分表)

更多请点击: https://intelliparadigm.com 第一章:AIGC内容工业化标准的提出背景与核心定义 近年来,AIGC(人工智能生成内容)从实验性工具快速演进为支撑媒体、营销、教育、游戏等多行业内容生产的基础设施。企业级应用…

2026/7/12 1:27:23
Transformer架构的局限性分析及替代方案探索

Transformer架构的局限性分析及替代方案探索

在深度学习领域,很少有哪个架构能像Transformer这样,在短短几年内彻底重塑整个行业的格局。从最初的机器翻译任务到如今的大语言模型浪潮,Transformer几乎成为了现代AI的代名词。但当我们沉浸在GPT、BERT等模型带来的惊艳表现时,很…

2026/7/12 1:27:23
3ds Max 多边形建模:篮球与足球/排球建模的3点核心差异与技巧对比

3ds Max 多边形建模:篮球与足球/排球建模的3点核心差异与技巧对比

3ds Max多边形建模:篮球与足球/排球建模的3点核心差异与技巧对比当你在3ds Max中第一次尝试创建体育用球模型时,可能会惊讶地发现:看似相似的篮球、足球和排球,在建模思路上却存在根本性差异。这种差异不仅体现在最终外观上&#…

2026/7/12 1:27:23
WaveTools:3分钟掌握《鸣潮》游戏优化与抽卡分析完整指南

WaveTools:3分钟掌握《鸣潮》游戏优化与抽卡分析完整指南

WaveTools:3分钟掌握《鸣潮》游戏优化与抽卡分析完整指南 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 你是否在玩《鸣潮》时遇到帧率不稳定、画质不够清晰的问题?是否因为记不清…

2026/7/12 1:27:23
LLM Wiki 知识库详解:从有损压缩到复利增长的知识革命

LLM Wiki 知识库详解:从有损压缩到复利增长的知识革命

LLM Wiki 知识库详解:从有损压缩到复利增长的知识革命 Karpathy 说:"LLM 本质上是互联网文本的有损压缩,它本身就是一部模糊的维基百科。"但 LLM Wiki 不止于此——它是一种让知识复利增长的新范式。本文系统剖析三种知识库范式的本…

2026/7/12 1:27:23
C++实现死锁检测算法:从资源分配图到拓扑排序的工程实践

C++实现死锁检测算法:从资源分配图到拓扑排序的工程实践

1. 项目概述与核心价值最近在带学生做操作系统课程设计,发现“死锁检测算法”的实现是很多人的痛点。网上理论一大堆,但真让你用C写一个能跑起来、能直观看到结果的程序,不少人就卡壳了。这不,刚有个学生拿着“哲学家就餐”的代码…

2026/7/12 1:22:23

月新闻