Java에서 가능한 모든 조합 생성

Sheeraz Gul 2023년10월12일
  1. 반복을 사용하여 Java에서 가능한 모든 조합 생성
  2. Include-Exclude를 사용하여 Java에서 가능한 모든 조합 생성
Java에서 가능한 모든 조합 생성

이 튜토리얼은 Java에서 배열 요소의 가능한 모든 조합을 생성하는 방법을 보여줍니다.

반복을 사용하여 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

Include-Exclude를 사용하여 Java에서 가능한 모든 조합 생성

마찬가지로 빈 배열을 만들고 파스칼 항등 문제를 사용하여 배열의 가능한 모든 조합을 생성합니다.

이 방법에서는 주어진 배열의 요소를 고려하고 두 가지 경우를 사용하여 반복합니다. 첫 번째 경우는 현재 조합에 포함된 요소입니다.

두 번째 경우는 요소가 현재 조합에서 제외된 경우입니다. 이 방법을 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