穷举vs暴搜vs深搜vs回溯vs剪枝系列一>解数独

ops/2025/2/5 9:27:37/

题目: 


解析: 

部分决策树: 

 


代码设计&剪枝&回溯: 

 


代码: 

class Solution {private boolean[][] row, col;private boolean[][][] gird; public void solveSudoku(char[][] board) {//下标->数字;0->1, 1->2row = new boolean[9][10];col = new boolean[9][10];gird = new boolean[3][3][10];//初始化上面的标记数组for(int i = 0; i < 9; i++)for(int j = 0; j < 9; j++){int num = board[i][j]-'0';if(board[i][j] != '.'){row[i][num] = col[j][num] = gird[i/3][j/3][num] = true;}}dfs(board);}private boolean dfs(char[][] board){for(int i = 0; i < 9; i++){for(int j = 0; j < 9; j++){if(board[i][j] == '.'){for(int num = 1; num <= 9; num++){//剪枝写法if(!row[i][num] && !col[j][num] && !gird[i/3][j/3][num]){board[i][j] = (char)('0' + num);row[i][num] = col[j][num] = gird[i/3][j/3][num] = true;//填数字往下遍历时候可能会出现 “某一行无数可以填”if(dfs(board) == true) return true;//回溯board[i][j] = '.';row[i][num] = col[j][num] = gird[i/3][j/3][num] = false;}}//一整行都没有返回时(已经试过9个数),也是出现“某一行无数可以填”return false;}}}//上面没有返回代表,前面的dfs已经全部填完return true;}
}

http://www.ppmy.cn/ops/155829.html

相关文章

【25考研】南开大学计算机复试攻略及注意事项

一、复试内容 复试为差额复试&#xff0c;各专业分别按录取成绩由高到低进行录取。复试成绩低于60分(不含60分)&#xff0c;确定为复试不合格&#xff0c;复试不合格的考生不予录取&#xff0c;不再进行录取成绩的加权计算。 复试分为C/C编程能力测试、专业综合基础测试、面试…

Linux系统管理

文章目录 一、进程与服务二、systemctl基本语法操作 三、系统运行级别Linux进程运行级别查看当前运行级别修改当前运行级别 四、关机重启命令 一、进程与服务 守护进程与服务是一个东西。 二、systemctl 基本语法 systemctl start|stop|restart|status 服务名查看服务的方法…

[EAI-030] DeepSeek 的 Janus,统一的多模态理解和生成模型

Paper Card 论文标题&#xff1a;Janus: Decoupling Visual Encoding for Unified Multimodal Understanding and Generation 论文作者&#xff1a;Chengyue Wu, Xiaokang Chen, Zhiyu Wu, Yiyang Ma, Xingchao Liu, Zizheng Pan, Wen Liu, Zhenda Xie, Xingkai Yu, Chong Ruan…

【2025年更新】1000个大数据/人工智能毕设选题推荐

文章目录 前言大数据/人工智能毕设选题&#xff1a;后记 前言 正值毕业季我看到很多同学都在为自己的毕业设计发愁 Maynor在网上搜集了1000个大数据的毕设选题&#xff0c;希望对大家有帮助&#xff5e; 适合大数据毕业设计的项目&#xff0c;完全可以作为本科生当前较新的毕…

CSS Display属性完全指南

CSS Display属性完全指南 引言核心概念常用display值详解1. block&#xff08;块级元素&#xff09;2. inline&#xff08;行内元素&#xff09;3. inline-block&#xff08;行内块级元素&#xff09;4. flex&#xff08;弹性布局&#xff09;5. grid&#xff08;网格布局&…

图的基本术语——非八股文

我之前只看到了数据结构与算法的冰山一角&#xff0c;感觉这些术语只会让知识越来越难理解&#xff0c;现在来看&#xff0c;他们完美抽象一些概念和知识&#xff0c;非常重要。 本篇概念肯定总结不全&#xff0c;只有遇到的会写上&#xff0c;持续更新&#xff0c;之前文章已经…

《offer 来了:Java 面试核心知识点精讲 -- 框架篇》(附资源)

继上篇文章介绍了《offer 来了&#xff1a;Java 面试核心知识点精讲 -- 原理篇》书后&#xff0c;本文章再给大家推荐兄弟篇 《offer来了&#xff1a;Java面试核心知识点精讲--框架篇》&#xff0c; 简直就是为Java开发者量身定制的面试神器。 本书是对Java程序员面试中常见的…

directx12 3d开发过程中出现的报错 一

报错&#xff1a;“&”要求左值 “& 要求左值” 这个错误通常是因为你在尝试获取一个临时对象或者右值的地址&#xff0c;而 & 运算符只能用于左值&#xff08;即可以放在赋值语句左边的表达式&#xff0c;代表一个可以被引用的内存位置&#xff09;。 可能出现错…