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

server/2025/3/13 6:01:33/

题目: 


解析: 

部分决策树: 

 


代码设计&剪枝&回溯: 

 


代码: 

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;}
}
文章来源:https://blog.csdn.net/robin_suli/article/details/145379274
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/server/164529.html

相关文章

http 请求类型及其使用场景

HTTP 请求方法在设计 API 时至关重要&#xff0c;它们提供了标准化的方式来描述对资源的不同操作。根据不同的业务需求&#xff0c;使用合适的 HTTP 方法来完成不同的操作有助于提高 API 的可读性和一致性。 各请求方法的区别 GET 是用来获取数据&#xff0c;常用于查询操作&…

使用Pygame制作“青蛙过河”游戏

本篇博客将演示如何使用 Python Pygame 从零开始编写一款 Frogger 风格的小游戏。Frogger 是一款早期街机经典&#xff0c;玩家需要帮助青蛙穿越车水马龙的马路到达对岸。本示例提供了一个精简原型&#xff0c;包含角色移动、汽车生成与移动、碰撞检测、胜利条件等关键点。希望…

什么情况下,C#需要手动进行资源分配和释放?什么又是非托管资源?

扩展&#xff1a;如何使用C#的using语句释放资源&#xff1f;什么是IDisposable接口&#xff1f;与垃圾回收有什么关系&#xff1f;-CSDN博客 托管资源的回收有GC自动触发&#xff0c;而非托管资源需要手动释放。 在 C# 中&#xff0c;非托管资源是指那些不由 CLR&#xff08;…

关于bash内建echo输出多行文本

echo命令 使用下述命令可以判断当前使用的echo命令是内建命令还是外部命令 type echo有下述输出&#xff0c;说明是内建命令 bash的内建命令输出多行文本时会拆分多次写入 如果希望不拆分多次写入&#xff0c;可以借用tee工具 tee工具可以将命令的输出同时发送到终端和文件…

第四章-SUSE- Rancher-容器高可用与容灾测试-RKE2(容灾测试)

系列文章目录 第一章-SUSE- Rancher-容器高可用与容灾测试-RKE2-外置Mysql&#xff08;主备集群搭建&#xff09;-CSDN博客 第二章-SUSE- Rancher-容器高可用与容灾测试-RKE2-集群搭建&#xff08;外置Mysql&#xff09; 第三章-SUSE- Rancher-容器高可用与容灾测试-Rancher-…

低代码产品表单渲染架构

在React和Vue没有流行起来的时候&#xff0c;低代码产品的表单渲染设计通常会使用操作Dom的方式实现。 下面是一个表单的例子&#xff1a; 产品层 用户通过打开表单&#xff0c;使用不同业务场景业务下的表单页面&#xff0c;中间的Render层就是技术实现。 每一个不同业务的表单…

深度学习:从基础到前沿

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;Linux &#x1f339;往期回顾&#x1f339;&#xff1a;【Linux】进程地址空间与虚拟地址空间 &#x1f516;流水不争&#xff0c;争的是滔滔不 一、深度学习的基础知…

Cocoa和Cocoa Touch是什么语言写成的?什么是Cocoa?编程语言中什么是框架?为什么苹果公司Cocoa类库有不少NS前缀?Swift编程语言?

Cocoa和Cocoa Touch是什么语言写成的? 二者主要都是用Objective-C语言编写而成的。 什么是Cocoa? Cocoa是苹果操作系统macOS和iOS上的应用程序开发框架集合&#xff0c;核心语言是Objective-C编程语言&#xff0c;在移动平台被称为Cocoa Touch&#xff0c;Cocoa包含多个子框架…