> Java > java지도 시간 > Java에서 여러 세트의 데카르트 곱을 계산하는 방법은 무엇입니까?

Java에서 여러 세트의 데카르트 곱을 계산하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-07 14:26:11
원래의
864명이 탐색했습니다.

How to Calculate the Cartesian Product of Multiple Sets in Java?

Java의 여러 집합의 데카르트 곱

둘 이상의 집합의 데카르트 곱을 결정하는 것은 프로그래밍의 일반적인 작업입니다. Java 라이브러리를 사용하여 이 작업을 수행하는 방법은 다음과 같습니다.

재귀적 접근 방식

임의의 세트 수에 대해 재귀적 접근 방식을 사용할 수 있습니다. CartesianProduct 메서드는 집합 배열을 인수로 받아들입니다. 세트 수가 유효한지 확인하고 다음 단계를 진행합니다.

  1. 기본 사례: 세트 수가 1이면 빈 세트가 반환됩니다.
  2. 재귀 단계 : 현재 세트의 각 요소에 대해 자신을 재귀적으로 호출하여 나머지 세트의 데카르트 곱을 얻습니다.
  3. 현재 요소를 각 곱에 추가합니다. 재귀 호출을 수행하고 이를 결과 세트에 추가합니다.

샘플 코드:

public static Set<Set<Object>> cartesianProduct(Set<?>... sets) {
    if (sets.length < 2)
        throw new IllegalArgumentException("Can't have a product of fewer than 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿