Java で可能なすべての組み合わせを生成する

Sheeraz Gul 2023年10月12日
  1. Java で繰り返しを使用して可能なすべての組み合わせを生成する
  2. Java でインクルード・エクスクルードを使用して可能なすべての組み合わせを生成する
Java で可能なすべての組み合わせを生成する

このチュートリアルでは、Java で配列の要素の可能なすべての組み合わせを生成する方法を示します。

Java で繰り返しを使用して可能なすべての組み合わせを生成する

まず、出力を格納する空の配列を作成します。アイデアは、要素を 1つずつ修正してから、繰り返しを使用することです。

最後に、初期配列の要素数が組み合わせのサイズと等しくなると、初期配列を出力します。Java で実装してみましょう。

package delftstack;

import java.io.*;

public class Possible_Combinations {
  static void CombinationPossible(int Input_Array[], int Empty_Array[], int Start_Element,
      int End_Element, int Array_Index, int r) {
    // Current combination is ready to be printed, print it
    if (Array_Index == r) {
      for (int x = 0; x < r; x++) {
        System.out.print(Empty_Array[x] + " ");
      }
      System.out.println("");
      return;
    }

    for (int y = Start_Element; y <= End_Element && End_Element - y + 1 >= r - Array_Index; y++) {
      Empty_Array[Array_Index] = Input_Array[y];
      CombinationPossible(Input_Array, Empty_Array, y + 1, End_Element, Array_Index + 1, r);
    }
  }

  static void Print_Combination(int Input_Arrary[], int n, int r) {
    int Empty_Array[] = new int[r];
    CombinationPossible(Input_Arrary, Empty_Array, 0, n - 1, 0, r);
  }

  public static void main(String[] args) {
    int Input_Array[] = {10, 30, 50, 70, 90, 100};
    int r = 3;
    int n = Input_Array.length;
    Print_Combination(Input_Array, n, r);
  }
}

上記のコードは、指定された配列のすべての可能な組み合わせを 3つの数値の形式で生成します。出力を参照してください:

10 30 50
10 30 70
10 30 90
10 30 100
10 50 70
10 50 90
10 50 100
10 70 90
10 70 100
10 90 100
30 50 70
30 50 90
30 50 100
30 70 90
30 70 100
30 90 100
50 70 90
50 70 100
50 90 100
70 90 100

Java でインクルード・エクスクルードを使用して可能なすべての組み合わせを生成する

同様に、空の配列を作成し、Pascal ID 問題を使用して、配列の可能なすべての組み合わせを生成します。

この方法では、与えられた配列の要素を考慮し、2つのケースを使用して回復します。最初のケースは、現在の組み合わせに含まれる要素です。

2 番目のケースは、要素が現在の組み合わせで除外されている場合です。このメソッドを Java で実装してみましょう。

package delftstack;

import java.io.*;

public class Possible_Combinations {
  static void PossibleCombinations(
      int Input_Array[], int n, int Length, int Array_Index, int Empty_Array[], int x) {
    if (Array_Index == Length) {
      for (int y = 0; y < Length; y++) System.out.print(Empty_Array[y] + " ");
      System.out.println("");
      return;
    }

    if (x >= n)
      return;

    Empty_Array[Array_Index] = Input_Array[x];
    PossibleCombinations(Input_Array, n, Length, Array_Index + 1, Empty_Array, x + 1);

    PossibleCombinations(Input_Array, n, Length, Array_Index, Empty_Array, x + 1);
  }

  static void Print_Combination(int Input_Array[], int n, int Length) {
    int Empty_Array[] = new int[Length];

    PossibleCombinations(Input_Array, n, Length, 0, Empty_Array, 0);
  }

  public static void main(String[] args) {
    int Input_Array[] = {10, 30, 50, 70, 90, 100};
    int Length = 3;
    int n = Input_Array.length;
    Print_Combination(Input_Array, n, Length);
  }
}

上記のコードは、指定された配列のすべての可能な組み合わせを 3つの数値の形式で生成します。出力を参照してください:

10 30 50
10 30 70
10 30 90
10 30 100
10 50 70
10 50 90
10 50 100
10 70 90
10 70 100
10 90 100
30 50 70
30 50 90
30 50 100
30 70 90
30 70 100
30 90 100
50 70 90
50 70 100
50 90 100
70 90 100
著者: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook