Permutation and Combination in Java2025年3月29日 | 阅读 4 分钟 在数学中,排列 (Permutation) 和 组合 (Combination) 是两个重要的概念。排列 是集合元素的各种不同排列方式。排列可以一次取一个元素、一次取若干个元素、一次取所有元素来进行。组合 是从集合中选取元素的不同组合方式,可以一次选取一个、若干个或所有元素。在 Java 中,排列 和 组合 的定义与数学定义相同。 ![]() 例如,如果我们有一个只包含两个元素的集合,即 X 和 Y。排列值为 2,因为只有两种可能的排列方式,即 XY 和 YX。组合值为 1,因为只有一种方式可以选择两个元素,即同时选择它们两个。 排列在 Java 中,要获取数组、列表或集合的所有排列以及排列值非常容易。要在 Java 中以编程方式获取排列值,我们使用以下公式: 排列 = fact(n) / fact(n-r); ![]() 首先,让我们以排列为例,了解如何在 Java 中以编程方式获取排列值。 PermutationExample.java输出 ![]() 描述在上面的代码中,我们创建了一个名为 PermutationExample 的类来获取排列值。在 PermutationExample 类中,我们创建了一个名为 fact() 的静态方法来计算阶乘。在排列公式中,我们需要计算 n 和 n-r 的阶乘。在 main 方法中,我们创建了一个数字列表并向其中添加了某些元素。我们使用 size() 方法获取列表中的元素数量。我们将 r 设置为常量值 3,即进行排列时选择的项目数。之后,我们使用排列公式,即 fact(n)/fact(n-r),并将结果存储在 result 变量中。最后,我们将最终结果显示给用户。 我们不仅可以找到排列值,还可以获取数组的所有排列。让我们再以排列为例,获取数组元素的所有可能排列。 GetAllPermutations.java输出 ![]() 描述上面的代码使用递归来获取所有排列,因此可能有点难以理解。在上面的代码中,我们创建了 GetAllPermutation 类来获取数组的所有排列。我们创建了一个名为 getPermutations() 的静态方法,在该方法内调用了 helper() 方法。在 helper 方法中,
组合 (Combination)与排列值一样,在 Java 中获取组合值也非常容易,但获取数组、列表和集合元素的所有组合比获取排列要困难得多。要在 Java 中以编程方式获取组合值,我们使用以下公式: 组合 = fact(n) / (fact(r) * fact(n-r)); ![]() 首先,让我们以组合为例,了解如何在 Java 中以编程方式获取组合值。 CombinationExample.java输出 ![]() 描述在上面的代码中,我们创建了一个名为 CombinationExample 的类来获取组合值。在 CombinationExample 类中,我们创建了一个名为 fact() 的静态方法来计算阶乘。在组合公式中,我们需要计算 n, r 和 n-r 的阶乘。在 main 方法中,我们创建了一个数字列表并向其中添加了某些元素。我们使用 size() 方法获取列表中的元素数量。我们将 r 设置为常量值 2,即一次选择的项目数。之后,我们使用组合公式,即 fact(n) / (fact(r) * fact(n-r)),并将结果存储在 result 变量中。最后,我们将最终结果显示给用户。 下一主题Java-查找图中母顶点的程序 |
如何在 Java 中将 String 转换为 String 数组? 在 Java 中,String 是一个表示字符序列的对象。 为了使用 String,我们需要导入 java.lang 包中定义的 String 类。 String 数组是字符串的数组...
阅读 6 分钟
Java 中的 return 语句是什么?在 Java 编程中,当代码块执行完成后,return 语句用于返回一个值。循环内的 return 语句将导致循环中断,并且后面的语句将被忽略...
7 分钟阅读
在 Java 中,我们可以创建一个 ATM 程序来表示 ATM 交易。在 ATM 程序中,用户必须从屏幕上显示的选项中选择一个选项。选项与取款、存款、查询余额和退出相关。为了...
阅读 3 分钟
Java 是一种著名且广泛使用的面向对象编程语言。它由 Sun Microsystems 于 1995 年开发。后来在 2009 年,Oracle Corp. 收购了 Java。在此期间,Java 也更改了其徽标。在本节中,我们将讨论 Java 的视觉识别,即...
阅读 3 分钟
在 Java 中,使用预定义方法可以非常轻松地找到数字的平方根。Java Math 类提供了 sqrt() 方法来查找数字的平方根。在本节中,我们将创建一个 Java 程序来查找...
阅读 3 分钟
在本节中,我们将学习 Java 中的 Morris 遍历前序遍历。在 Morris 遍历中,我们无需递归或堆栈即可完成树的遍历。Morris 遍历基于线索化二叉树。Morris 遍历前序算法 下面是...
阅读 4 分钟
Java EE v/s Node.js Java EE 代表 Java Enterprise Edition,目前称为 Jakarta EE。在过去的十年中,它被称为 J2EE。Java EE 为 Java 开发人员提供了企业级功能(如 Web 服务和分布式计算)的平台。在……
阅读 2 分钟
在本教程中,我们将学习 Java 中的“宏大数”(Magnanimous number)。宏大数是指至少有 2 位数字,并且当数字的左部分与右部分相加时始终生成素数的数字... ...
5 分钟阅读
Giuga 数是一个合数 N,它具有一个独特的属性。该属性指出,对于 N 的每个素数因子 p,N 除以 p 减 1((N/p) - 1)也必须能被 p 整除。如果一个数 N 满足这个条件...
5 分钟阅读
Apache Maven 是一个基于项目对象模型 (POM) 的项目管理工具。它对于依赖管理、项目构建和文档非常有用。要在我们的项目中添加任何依赖项,我们需要维护一个 pom.xml 文件,其中包含依赖项...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India