ホームページ  >  記事  >  Java  >  セットのサブセットを解決するための Java サンプル コード共有

セットのサブセットを解決するための Java サンプル コード共有

黄舟
黄舟オリジナル
2017-10-16 10:07:481553ブラウズ

この記事では、主に 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: 帰納法


りー

以上がセットのサブセットを解決するための Java サンプル コード共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。