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);
}

更新於: 2020 年 6 月 26 日

5K+ 瀏覽

啟動你的 職業生涯

完成課程並獲得認證

開始
廣告