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

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

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. thinkphp安装 版本 3.1.3

    基础版: 只有thinkphp基础运行功能 完整版:基础运行能力,还有图片.上传等各种处理类(建议下载完整版) 重要的三个变量 define('APP_DEBUG',True); // 定义应用目录d ...

  2. JAVA中的聚集和组合的区别和联系

    选自<JAVA语言程序设计-基础篇(原书第8版)> 定义:一个对象可以包含另一个对象.这两个对象之间的关系称为组合(composition). 组合实际上是聚集关系的一种特殊形式.聚集模拟 ...

  3. Robot Framework--04 工作区

    转自:http://blog.csdn.net/tulituqi/article/details/7592711 一:Edit 接着前面的来,重新打开我们的RIDE,你会发现之前最后加的Resourc ...

  4. CO-类的本质、description方法

    类的本质 1. 类也是个对象 其实类也是一个对象,是Class类型的对象,简称“类对象” Class类型的定义 typedef struct objc_class  *Class; 类名就代表着类对象 ...

  5. C# Emit动态代理生成一个实体对象

    /// <summary> /// 使用Emit动态代理收集实体信息 /// </summary> /// <typeparam name="T"&g ...

  6. mysql 如何用一条SQL将一张表里的数据插入到另一张表 3个例子

    1. 表结构完全一样 insert into 表1 select * from 表2  2. 表结构不一样(这种情况下得指定列名) insert into 表1 (列名1,列名2,列名3) selec ...

  7. android自定义控件(5)-实现ViewPager效果

    对于系统的ViewGroup我们已经是十分熟悉了,最常用的LinearLayout和RelativeLayout几乎是天天要打交道,下面我们就来看看,如何一步一步将其实现: 一.首先当然也是最通常的新 ...

  8. 【9-15】python学习笔记01

    使用#开启行注释: 命令行:使用ctrl+d 退出

  9. JAVA常用时间操作类

    http://www.360doc.com/content/10/1210/17/2703996_76839640.shtml    在程序里面要获取当前的开始时间和结束时间,以及当前天所在的周的开始 ...

  10. jQuery源码-dom操作之jQuery.fn.html

    写在前面 前面陆陆续续写了jQuery源码的一些分析,尽可能地想要cover里面的源码细节,结果导致进度有些缓慢.jQuery的源码本来就比较晦涩,里面还有很多为了解决兼容问题很引入的神代码,如果不g ...