Java 中的数独17 Mar 2025 | 6 分钟阅读 数独是一种基于逻辑的数字排列谜题。在经典的数独谜题中,任务是在一个9x9的网格中填入数字,使得每一行、每一列以及每一个3x3的子网格都包含数字1到9(包含1和9)。图示如下: ![]() 在代码中,我们将上述9x9的网格输入如下: 网格中有许多0。它表示网格中包含0的单元格是空的,需要被填充。为了填充这些空单元格中的数字,我们将使用回溯法来解决谜题。 使用回溯法在这种方法中,我们逐个为空单元格分配数字。在分配任何数字之前,我们会检查该数字是否已存在于当前列、当前行或当前3x3子网格中。如果该数字已存在,则我们尝试另一个数字并检查其安全性。 如果相同的数字不存在,则该数字被分配,然后我们递归地检查此分配是否会导致解决方案。如果分配不导致解决方案,则我们尝试另一个数字并重复该过程。如果1到9之间的任何数字都无法导致解决方案,则返回false,并显示消息“不存在解决方案”。 算法步骤1:创建一个函数,其作用是检查在当前索引处为数字分配时网格是否安全。对于盒子、列和行,创建一个HashMap来存储数字的频率。 如果HashMap显示任何数字的频率大于1,则返回false,否则返回true。除了HashMap,也可以使用循环。 步骤2:编写一个接受网格作为输入的递归函数。 步骤3:查找网格中未分配的位置。如果存在未分配的位置,则分配一个1到9之间的数字,检查分配给当前索引的数字是否使网格安全。 如果网格安全,则递归调用该方法处理1到9之间所有安全的情况。如果任何递归调用返回true,则通过返回true来终止循环。如果没有递归调用返回true,则返回false。 步骤4:如果网格中未分配位置的总数为零,则返回true。 实施让我们根据上述算法看看实现。 文件名: SudokuPuzzle.java 输出 The grid is: 7 0 0 0 0 0 2 0 0 4 0 2 0 0 0 0 0 3 0 0 0 2 0 1 0 0 0 3 0 0 1 8 0 0 9 7 0 0 9 0 7 0 6 0 0 6 5 0 0 3 2 0 0 1 0 0 0 4 0 9 0 0 0 5 0 0 0 0 0 1 0 6 0 0 6 0 0 0 0 0 8 The solution of the grid is: 7 6 5 8 4 3 2 1 9 4 1 2 6 9 7 8 5 3 9 3 8 2 5 1 7 6 4 3 2 4 1 8 6 5 9 7 1 8 9 5 7 4 6 3 2 6 5 7 9 3 2 4 8 1 8 7 1 4 6 9 3 2 5 5 9 3 7 2 8 1 4 6 2 4 6 3 1 5 9 7 8 时间复杂度:对于每个空单元格,有9个可用选项,因此时间复杂度为O(9 ^ (n x n))。 空间复杂度:O(n x n)。因为还需要存储输出网格。 下一主题Java中的圣诞树图案 |
java.time.format.DecimalStyle 类是 getDecimalSeparator() 方法。使用 DecimalStyle 类获取用于表示此 DecimalStyle 的 Locale 的小数分隔符的字符。该过程返回该区域设置的十进制分隔符的字符。语法:public char getDecimalSeparator() 参数:无参数...
阅读 2 分钟
最受欢迎的编程问题之一是创建所有可能的字符串组合。在 Java 中有几种方法可以做到这一点,包括重复和递归。在本节中,我们将探讨生成给定字符串的所有可能组合的多种方法。方法 1:...
5 分钟阅读
在本节中,我们将学习什么是数组旋转以及如何通过 Java 程序来旋转数组。Java 数组旋转数组旋转简单地意味着将数组元素移到指定位置。我们可以旋转...
5 分钟阅读
字体是任何图形用户界面中的基本方面,Java 提供了强大的支持来处理和显示字体。无论我们是使用 Swing 开发桌面应用程序,还是使用 JavaFX 开发 Web 应用程序,理解如何使用字体对于创建视觉上...
阅读9分钟
Boyer-Moore算法是Robert S. Boyer和J Strother Moore于1977年开发的一种字符串搜索或匹配算法。它是一种广泛使用且最高效的字符串匹配算法。它比蛮力算法快得多。在本节中,我们将讨论...
阅读 12 分钟
这个问题是顶尖 IT 公司(如 Google、Facebook、Amazon 和 Microsoft)在编码面试中通常会问到的最著名的问题。在本节中,我们将创建 Java 程序(不同逻辑),以从给定数组中构建最大数字。例如:输入:{10, 68, 75,...
阅读 3 分钟
(JFR) 是一个强大的性能监控和分析工具。它可以在出现灾难性故障时持续诊断、收集和监控正在运行的 Java 应用程序。它已集成到 JVM 中。该工具为应用程序性能分析提供了强大的 GUI。它用于...
阅读 12 分钟
此 Java 程序查找并显示数组中所有重复元素的频率。通过使用 HashMap,程序有效地计算每个组件的出现次数。然后,它识别并输出出现次数超过一次的元素,从而有助于理解数据分布和...
阅读9分钟
以下是演示此程序的程序。文件:ConvertStringToInteger.java public class ConvertStringToInteger { public static void main(String[] args) { // 第一种方式 String str1 = "5"; int result = Integer.parseInt(str1); // 使用 Integer.parsrInt() System.out.println(result); // 第二种方式 String str2 = "5"; Integer result2 =...
阅读1分钟
Java 作为使用最广泛的编程语言之一,提供了强大的异常处理机制,帮助开发人员有效地识别和处理运行时错误。异常消息在此过程中起着至关重要的作用,因为它们提供了关于异常性质和原因的宝贵信息……
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India