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 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