回溯-数独-二维递归

news/2024/9/21 1:03:01/

1.递归函数以及参数

递归函数的返回值需要是bool类型,为什么呢?

因为解数独找到一个符合的条件(就在树的叶子节点上)立刻就返回,相当于找从根节点到叶子节点一条唯一路径,所以需要使用bool返回值。

2.递归终止条件

本题递归不用终止条件,解数独是要遍历整个树形结构寻找可能的叶子节点就立刻返回

3.代码

private static boolean shudu(char[][] board) {//只需要找到符合条件的即可返回,所以返回值为boolean,true则直接return//递归没有终止条件,直接遍历到底部for (int i = 0; i < 9; i++) {//行遍历for (int j = 0; j < 9; j++) {//列遍历if (board[i][j] != '.') {//如果有数字,则跳过;没有则进行递归continue;}for (char k = '1'; k <= '9'; k++) {//遍历数字从1-9if (isValid(i, j, k, board)) {//判断是否合法,合法则填入board[i][j] = k;//递归if (shudu(board)) {return true;}//递归返回后,如果递归返回false,则将填入的数字还原,继续尝试下一个数字board[i][j] = '.';}}// 如果一行 Nine 个数字都尝试完,则返回 falsereturn false;}}//全部遍历完也没有false,则返回truereturn true;}private static boolean isValid(int i, int j, char k, char[][] board) {for (int row = 0; row < 9; row++) {//判断行if (board[row][j] == k) {return false;}}for (int col = 0; col < 9; col++) {//判断列if (board[i][col] == k) {return false;}}for (int row = (i / 3) * 3; row < (i / 3) * 3 + 3; row++) {//(i / 3)为第几个九宫格  (i / 3) * 3为这个九宫格的起点//判断九宫格for (int col = (j / 3) * 3; col < (j / 3) * 3 + 3; col++) {if (board[row][col] == k) {return false;}}}return true;}


http://www.ppmy.cn/news/1528160.html

相关文章

算法课习题汇总(2)

整数划分问题 将正整数n表示成一系列正整数之和&#xff0c;nn1n2…nk(n1>n2>…>nk,k>1)。正整数n的这种表示称为正整数n的划分。 思路&#xff1a; n表示待划分数&#xff0c;m表示最大减数。 #include<iostream> using namespace std;int q(int n, int…

王道408考研数据结构-串-第四章

4.2 串的模式匹配 4.2.1 简单的模式匹配算法 子串的定位操作通常称为串的模式匹配&#xff0c;它求的是子串(常称模式串)在主串中的位置。这里采用定长顺序存储结构&#xff0c;给出一种不依赖于其他串操作的暴力匹配算法。 int Index(SString s,SString T){int i1,j1;whil…

Redis 主从复制配置教程

1. 什么是 Redis 主从复制 Redis 主从复制&#xff08;Master-Slave Replication&#xff09;允许一个 Redis 实例作为主节点&#xff08;Master&#xff09;&#xff0c;多个 Redis 实例作为从节点&#xff08;Slave&#xff09;&#xff0c;从节点会自动同步主节点的数据&am…

认知小文2《成功之路:习惯、学习与实践》

内容摘要&#xff1a; 在这个充满机遇的时代&#xff0c;成功不再是偶然&#xff0c;而是可以通过培养良好习惯、持续学习和实践来实现的目标。    一、肌肉记忆&#xff1a;技能的基石 成功往往需要像运动员一样&#xff0c;通过日复一日的练习来形成肌肉记忆。无论是健身…

人工智能安全治理新篇章:《2024人工智能安全治理框架1.0版》深度解读@附20页PDF文件下载

在数字化浪潮席卷全球的今天&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的速度融入我们的日常生活&#xff0c;从智能助手到自动驾驶&#xff0c;从医疗诊断到金融风控&#xff0c;AI的身影无处不在。然而&#xff0c;技术的双刃剑特性也让我们不得不面对…

WGCAT工单系统 v1.2.1 支持导出PDF和分享创建工单功能

官网下载&#xff1a;www.wgstart.com WGCAT-v1.2.1 更新说明&#xff0c;2024-09-15发布 1. 新增&#xff0c;工单数据支持导出为PDF文件 2. 新增&#xff0c;可以分享给其他人创建工单&#xff0c;分享创建工单的链接不需要登录&#xff0c;直接可以提交工单数据&#xff0c;…

线性系统分析

一、定义 (1)叠加性 若 且 则称该系统具有叠加性。 叠加性:系统的一个输入不影响系统对其他输入的响应。 (2)均匀性 若 对任意常数a下式都成立 则称该系统具有均匀性。 均匀性:系统能够保持对输入信号的缩放因子不变。 (3)线性系统 若一个系统同时具有叠加性和…

代码随想录刷题day32丨动态规划理论基础,509. 斐波那契数, 70. 爬楼梯, 746. 使用最小花费爬楼梯

代码随想录刷题day32丨动态规划理论基础&#xff0c;509. 斐波那契数&#xff0c; 70. 爬楼梯&#xff0c; 746. 使用最小花费爬楼梯 1.动态规划理论基础 动态规划&#xff0c;英文&#xff1a;Dynamic Programming&#xff0c;简称DP&#xff0c;如果某一问题有很多重叠子问题…