Java 中的排列组合
排列组合是组合学的一部分。排列是一组元素可以组成的不同排列,如果元素一次一个、一次一些或一次全部。组合是选择元素的不同方法,如果元素一次一个、一次一些或一次全部。
如下给出一个示例 −
Permutation = factorial(n) / factorial(n-r); Combination = factorial(n) / (factorial(r) * factorial(n-r)); n = 5 r = 3 Permutation = 60 Combination = 10
一个演示此示例的程序如下 −
示例
public class Example { static int factorial(int n) { int fact = 1; int i = 1; while(i <= n) { fact *= i; i++; } return fact; } public static void main(String args[]) { int n = 7, r = 3, comb, per; per = factorial(n) / factorial(n-r); System.out.println("Permutation: " + per); comb = factorial(n) / (factorial(r) * factorial(n-r)); System.out.println("Combination: " + comb); } }
以上程序的输出如下 −
输出
Permutation: 210 Combination: 35
现在我们了解一下上述程序。
函数 factorial 使用 while 循环查找数字 n 的阶乘。然后它返回 fact。演示这一点的代码段如下 −
static int factorial(int n) { int fact = 1; int i = 1; while(i <= n) { fact *= i; i++; } return fact; }
在函数 main() 中,n 和 r 的排列和组合是使用它们各自的公式找到的。然后显示结果。演示这一点的代码段如下 −
public static void main(String args[]) { int n = 7, r = 3, comb, per; per = factorial(n) / factorial(n-r); System.out.println("Permutation: " + per); comb = factorial(n) / (factorial(r) * factorial(n-r)); System.out.println("Combination: " + comb); }
广告