首页 > 其他 > 详细

9.4---集合子集(CC150)

时间:2015-12-29 20:48:19      阅读:303      评论:0      收藏:0      [点我收藏+]

这题非常复杂。牛客网上对应的题目对结果要求比较苛刻,所以要调整。

整体思路是:先放进去一个,然后第二个来的时候插入到已有的,并且把自己也放进去。

public static  ArrayList<ArrayList<Integer>> getSubsets(int[] a, int n){
        ArrayList<ArrayList<Integer>> res = new ArrayList();
        if(n <= 0) return res;

        ArrayList<Integer> tmp = new ArrayList();
        tmp.add(a[n-1]);
        res.add(tmp);
        for(int i = n-2; i >=0; i--){
            ArrayList<ArrayList<Integer>> res2 = new ArrayList(res);
            for(ArrayList<Integer> list : res){
                ArrayList<Integer> list2 = new ArrayList(list);
                list2.add(a[i]);
                res2.add(list2);
            }
            ArrayList<Integer> list3 = new ArrayList();
            list3.add(a[i]);
            res2.add(list3);
            res = new ArrayList(res2);    
        }

        ArrayList<ArrayList<Integer>> res3 = new ArrayList();
        ArrayList<Integer> max = new ArrayList();
    
        int flag = 0;
        int h = res.size();
        while(res3.size() != h){
            max = res.get(0);
            for(int i = 1; i < res.size(); i++){
                if(big(res.get(i),res.get(flag))){
                    max = res.get(i);
                    flag = i;
                }
            
            }
            ArrayList<Integer> list4 = new ArrayList(max);
            res3.add(list4);
            
            res.remove(flag);
            flag = 0;

        }

        return res3;
    }


    public static boolean big(ArrayList<Integer> list1, ArrayList<Integer> list2){
        for(int i = 0; i < list1.size() && i<list2.size(); i++){
            if(list1.get(i) > list2.get(i)){
                return true;
            }
            else if(list1.get(i) < list2.get(i)){
                return false;
            }
            else{

            }
        }
        if(list1.size() > list2.size())
            return true;
        else{
            return false;
        }
    }

 

9.4---集合子集(CC150)

原文:http://www.cnblogs.com/yueyebigdata/p/5086740.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!