栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java 计算一组数的所有子集

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 计算一组数的所有子集

你想要的就是Powerset。这是一个简单的实现:

public static Set<Set<Integer>> powerSet(Set<Integer> originalSet) {        Set<Set<Integer>> sets = new HashSet<Set<Integer>>();        if (originalSet.isEmpty()) { sets.add(new HashSet<Integer>()); return sets;        }        List<Integer> list = new ArrayList<Integer>(originalSet);        Integer head = list.get(0);        Set<Integer> rest = new HashSet<Integer>(list.subList(1, list.size()));        for (Set<Integer> set : powerSet(rest)) { Set<Integer> newSet = new HashSet<Integer>(); newSet.add(head); newSet.addAll(set); sets.add(newSet); sets.add(set);        }        return sets;    }

我将为你提供一个示例,说明该算法如何用于的幂集{1, 2, 3}:

  • Remove
    {1}
    , and execute powerset for
    {2, 3}
    ;
  • Remove
    {2}
    , and execute powerset for
    {3}
    ;
    • Remove
      {3}
      , and execute powerset for
      {}
      ;
    • Powerset of
      {}
      is
      {{}}
      ;
    • Powerset of
      {3}
      is
      3
      combined with
      {{}} = { {}, {3} }
      ;
  • Powerset of
    {2, 3} is {2}
    combined with
    { {}, {3} } = { {}, {3}, {2}, {2, 3} }
    ;
  • Powerset of
    {1, 2, 3} is {1}
    combined with
    { {}, {3}, {2}, {2, 3} } = { {}, {3}, {2}, {2, 3}, {1}, {3, 1}, {2, 1}, {2, 3, 1} }.


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/451906.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号