求列表的所有子集

来源:互联网 发布:二叉树的层次遍历算法 编辑:程序博客网 时间:2024/04/27 22:22
public void TestOptional(){        //需要求的列表        List<Integer> list = new ArrayList<>(Arrays.asList(1,2,3));        //存取可能结果的容器,使用List<List<Integer>>更好        List<String> lists = new ArrayList<>();        //添加进第一个元素,便于接下来类动态规划迭代        lists.add(Integer.toString(list.get(0)));        int i = 1,m,temp;        /*            m为每个添加操作前的目标容器的大小            temp代表第i个元素的大小        */        while (i<list.size()) {            temp = list.get(i++);            m = lists.size();            //每次添加进当前元素            lists.add(Integer.toString(temp));            //分解子问题,f(n)等于f(n-1)的所有子集加上索引为n的元素            for (int j = 0; j < m ; j++){                lists.add( lists.get(j) + " " + temp );            }        }        //打印结果,因为单纯为了测试算法        //忽略了列表为空列表以及子集中包含空子集的情况        lists.forEach(s -> System.out.println(s));    }

结果:

121 231 32 31 2 3

有错误的话希望大神能指出,我还是个算法渣,每天记录一下自己的小练习,谢谢!

0 0
原创粉丝点击