4

特定のセットのすべてのサブセットを見つけたい。次のように定義された文字列セットを取得しました:HashSet<String> Lそして、ループ内でそのすべてのサブセットを次のように使用したい: for each L の部分集合do something . それを行うための複雑さの少ない簡単な方法はありますか?

4

2 に答える 2

12

OK、私はこのアルゴリズムを使用しました (Lは文字列のセットです):

powerSet = new HashSet<List<String>>();
List<String> mainList = new ArrayList<String>(L);
buildPowerSet(mainList,mainList.size());

と、

private static void buildPowerSet(List<String> list, int count)
{
    powerSet.add(list);

    for(int i=0; i<list.size(); i++)
    {
        List<String> temp = new ArrayList<String>(list);
        temp.remove(i);
        buildPowerSet(temp, temp.size());
    }
}
于 2013-09-14T13:47:22.053 に答える