>Java >java지도 시간 >집합 하위 집합 해결을 위한 Java 예제 코드 공유

집합 하위 집합 해결을 위한 Java 예제 코드 공유

黄舟
黄舟원래의
2017-10-16 10:07:481582검색

이 글은 주로 Java에서 집합의 부분 집합을 해결하는 예제에 대한 정보를 소개합니다. 이 글이 모든 사람에게 도움이 되고 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

Java는 집합의 부분 집합을 해결합니다. 예

방법 1: 부분 집합 2의 n제곱을 알고 있습니다.

예를 들어 a, b, c의 부분 집합

       * 000  0                                                                            011 3 a,b (b,a)
*100 4 c
* 101 5 a,c (c,a)
* 110 6 b,c (c,b)
* 111 7 a,b,c


이진 대응 사용


@Test 
public void test1() throws Exception { 
   
  Set<ArrayList<Integer>> subsets = getSubsets( Arrays.asList(1,2,6)); 
  Set<ArrayList<String>> subsets2 = getSubsets( Arrays.asList("a","b","c")); 
  Set<ArrayList<Character>> subsets3 = getSubsets( Arrays.asList(&#39;b&#39;,&#39;c&#39;,&#39;d&#39;)); 
  System.out.println(subsets); 
  System.out.println(subsets2); 
  System.out.println(subsets3); 
} 
 
//集合接受各种类型数据 
public <T> Set<ArrayList<T>> getSubsets(List<T> subList) { 
  //考虑去重 
  Set<ArrayList<T>> allsubsets = new LinkedHashSet<>(); 
  int max = 1 << subList.size(); 
  for (int loop = 0; loop < max; loop++) { 
    int index = 0; 
    int temp = loop; 
    ArrayList <T> currentCharList = new ArrayList<T>(); 
    //控制索引 
    while (temp > 0) { 
      if ((temp & 1) > 0) { 
        currentCharList.add(subList.get(index)); 
      } 
      temp >>= 1; 
      index++; 
    } 
    allsubsets.add(currentCharList); 
  } 
  return allsubsets; 
}

방법 2: 귀납법


rreee

위 내용은 집합 하위 집합 해결을 위한 Java 예제 코드 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.