이 글은 주로 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('b','c','d')); 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: 귀납법
위 내용은 집합 하위 집합 해결을 위한 Java 예제 코드 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!