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

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

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)的更多相关文章

  1. 【SICP读书笔记(五)】练习2.32 --- 递归求集合子集

    题目内容: 我们可以将一个集合表示为一个元素互不相同的表,因此就可以将一个集合的所有子集表示为表的表.例如,假定集合为(1,2,3),它的所有子集的集合就是( () (3) (2) (2 3) (1) ...

  2. Subsets 集合子集 回溯

    Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be ...

  3. pthon/零起点(一、集合)

    pthon/零起点(一.集合) set( )集合,集合是无序的,集合是可变的,集合是可迭代的 set()强型转成集合数据类型 set()集合本身就是去掉重复的元素 集合更新操作案列: j={1,2,3 ...

  4. 【集合】Java集合框架

    Java类库中帮助我们在程序设计中实现了传统的数据结构.本文章跳过理论部分,主要介绍如何使用标准库中的集合类. 1 将集合的接口与实现分离 Java集合类库将接口与实现分离.以队列为例: public ...

  5. Python—集合的操作、文件的操作

    1.集合的操作 2.文件的操作 1.集合的操作 定义: 1.不同元素组成,自动去重 2.无序 3.集合中的元素必须是不可变类型 1.集合的定义: >>> s1 = set('abcd ...

  6. Python之set集合与collections系列

    1>set集合:是一个无序且不重复的元素集合:访问速度快,解决了重复的问题: s2 = set(["che","liu","haha" ...

  7. 算法笔记_074:子集和问题(Java)

    目录 1 问题描述 2 解决方案 2.1 全排列思想求解 2.2 状态空间树思想求解   1 问题描述 求n个正整数构成的一个给定集合A = {a1,a2,a3,...,an}的子集,子集的和要等于一 ...

  8. java成神之——集合框架之ArrayList,Lists,Sets

    集合 集合种类 ArrayList 声明 增删改查元素 遍历几种方式 空集合 子集合 不可变集合 LinkedList Lists 排序 类型转换 取交集 移动元素 删除交集元素 Sets 集合特点 ...

  9. python基础——数字&集合&布尔类型

    Python的核心数据类型 内置对象 对象类型 例子 数字 123,3.1415,3+4j,Decimal(小数),Fraction(分数) 字符串 'dodo',"guido's" ...

  10. Python学习————集合的增删查

    可变的数据类型,他里面的元素必须是不可变的数据类型.无序,内容不能重复.应用于去重 增加:set1.add('元素')--->将元素无序的插入集合set1中set1.update("元 ...

随机推荐

  1. 初识Python类

    吐槽:学习面向对象就像你追一个女神一样,刚刚有点感觉了,过几天又陷入绝望的感觉,很蛋疼. 类的语法 class Person(object): print("learning class&q ...

  2. 通过XHR  API来下载和上传图片

    1.不用HTML中的img标签来下载图片,通过XHR  api来下载图片: var xhr = new XMLHttpRequest(); xhr.open('GET','/img/tooth-int ...

  3. Unity Shader Lab

    http://docs.unity3d.com/460/Documentation/Manual/SL-BuiltinValues.html http://docs.unity3d.com/Manua ...

  4. Apache源码包安装和子配置文件介绍--update.2014-12-5

    安装apache: 官网:http://httpd.apache.org/download.cgi#apache24 1.wget http://mirror.bit.edu.cn/apache//h ...

  5. .NET获取服务器信息,如服务器版本、IIS等

    .NET获取服务器信息,如服务器版本.IIS等 .NET获取服务器信息,如服务器版本.IIS版本.数据库大小.网站系统空间占用大小.网站部署路径等等 .NET获取系统环境信息 #region 返回操作 ...

  6. .NET软件开发与常用工具清单(转)

    http://www.cnblogs.com/smileberry/p/4047835.html

  7. validate jquery 注册页面使用实例 详解

    官方使用文档:http://jqueryvalidation.org/documentation/ 参考资料:http://www.w3cschool.cc/jquery/jquery-plugin- ...

  8. centos 7.0安装花生壳

    没有wget 先下载get  命令 yum -y install wget 下载位置/usr/local/src 解压目录 /usr/local/bin/phddns-2.0.6.x86_64 1.下 ...

  9. mysql计划任务每天定时执行

    代码例子:CREATE EVENT `course_listener` ON SCHEDULE EVERY DAY STARTS '2012-07-18 00:00:00' ON COMPLETION ...

  10. LAMP环境CentOS6.4 PHP5.4随笔未整理

    首先安装一些辅助的软件或者说是依赖的关系包. 1.安装libxml2: libxml是一个用来解析XML文档的函数库.它用C语言写成, 并且能为多种语言所调用,例如C语言,C++,XSH.C#, Py ...