여러 세트에 대한 효율적인 데카르트 곱 계산
여러 세트의 데카르트 곱을 구하는 것은 프로그래밍에 유용한 작업이 될 수 있습니다. 여기에는 입력 세트에서 가능한 모든 요소 조합을 포함하는 새 세트를 생성하는 작업이 포함됩니다. Java에는 이 작업을 용이하게 할 수 있는 몇 가지 라이브러리가 있습니다.
임의의 세트 수에 대한 재귀 솔루션
그러나 세트 수가 동적으로 변하는 경우 재귀 솔루션을 구현할 수 있습니다.
public static Set<Set<Object>> cartesianProduct(Set<?>... sets) { if (sets.length < 2) throw new IllegalArgumentException("Product requires at least two sets (got " + sets.length + ")"); return _cartesianProduct(0, sets); } private static Set<Set<Object>> _cartesianProduct(int index, Set<?>... sets) { Set<Set<Object>> ret = new HashSet<>(); if (index == sets.length) { ret.add(new HashSet<>()); } else { for (Object obj : sets[index]) { for (Set<Object> set : _cartesianProduct(index + 1, sets)) { set.add(obj); ret.add(set); } } } return ret; }
이 재귀 함수는 일련의 집합을 입력으로 사용하여 반복적으로 수행합니다. 각 세트의 요소를 결합하여 데카르트 곱을 형성합니다. 이 솔루션은 Java의 제한으로 인해 일반 유형 정보를 보존할 수 없습니다.
위 내용은 Java에서 여러 세트의 데카르트 곱을 효율적으로 계산하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!