如何计算幂集

21 篇文章 0 订阅

1. 如何计算幂集

1.1. 需求

给定三个数字1,2,3 得到 {1,2,3,12,13,23,123,""}等等这些集合

原始文章,感谢这位大哥

1.2. 什么是幂集

百科

1.3. 代码

1.3.1. 核心

    public List<List<String>> powerSet(List<String> set) {
        //已知所求集合的幂集会有2^n个元素
        int size = 2 << set.size();
        List<List<String>> powerSet = new ArrayList<>(size);
        //首先空集肯定是集合的幂集
        powerSet.add(Collections.emptyList());
        for (String element : set) {
            //计算当前元素与已存在幂集的组合
            int preSize = powerSet.size();
            for (int i = 0; i < preSize; i++) {
                List<String> combineSubset = new ArrayList<>(powerSet.get(i));
                combineSubset.add(element);
                powerSet.add(combineSubset);
            }
        }
        return powerSet;
    }

1.3.2. 测试

    /**
     * 打印一下生成的幂集
     */
    @Test
    public void printData() {
        List<String> set = Arrays.asList("1", "2", "3");
        List<List<String>> powerSet = powerSet(set);
        Console.log("幂集的数量是 = [ {} ]",powerSet.size());
        for (List<String> item : powerSet) {
            String join = Joiner.on(",").join(item);
            System.out.println(join);
        }
    }

1.3.3. 结果

幂集的数量是 = [ 8 ]

1
2
1,2
3
1,3
2,3
1,2,3
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值