9.4---集合子集(CC150)
这题非常复杂。牛客网上对应的题目对结果要求比较苛刻,所以要调整。
整体思路是:先放进去一个,然后第二个来的时候插入到已有的,并且把自己也放进去。
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)的更多相关文章
- 【SICP读书笔记(五)】练习2.32 --- 递归求集合子集
题目内容: 我们可以将一个集合表示为一个元素互不相同的表,因此就可以将一个集合的所有子集表示为表的表.例如,假定集合为(1,2,3),它的所有子集的集合就是( () (3) (2) (2 3) (1) ...
- Subsets 集合子集 回溯
Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be ...
- pthon/零起点(一、集合)
pthon/零起点(一.集合) set( )集合,集合是无序的,集合是可变的,集合是可迭代的 set()强型转成集合数据类型 set()集合本身就是去掉重复的元素 集合更新操作案列: j={1,2,3 ...
- 【集合】Java集合框架
Java类库中帮助我们在程序设计中实现了传统的数据结构.本文章跳过理论部分,主要介绍如何使用标准库中的集合类. 1 将集合的接口与实现分离 Java集合类库将接口与实现分离.以队列为例: public ...
- Python—集合的操作、文件的操作
1.集合的操作 2.文件的操作 1.集合的操作 定义: 1.不同元素组成,自动去重 2.无序 3.集合中的元素必须是不可变类型 1.集合的定义: >>> s1 = set('abcd ...
- Python之set集合与collections系列
1>set集合:是一个无序且不重复的元素集合:访问速度快,解决了重复的问题: s2 = set(["che","liu","haha" ...
- 算法笔记_074:子集和问题(Java)
目录 1 问题描述 2 解决方案 2.1 全排列思想求解 2.2 状态空间树思想求解 1 问题描述 求n个正整数构成的一个给定集合A = {a1,a2,a3,...,an}的子集,子集的和要等于一 ...
- java成神之——集合框架之ArrayList,Lists,Sets
集合 集合种类 ArrayList 声明 增删改查元素 遍历几种方式 空集合 子集合 不可变集合 LinkedList Lists 排序 类型转换 取交集 移动元素 删除交集元素 Sets 集合特点 ...
- python基础——数字&集合&布尔类型
Python的核心数据类型 内置对象 对象类型 例子 数字 123,3.1415,3+4j,Decimal(小数),Fraction(分数) 字符串 'dodo',"guido's" ...
- Python学习————集合的增删查
可变的数据类型,他里面的元素必须是不可变的数据类型.无序,内容不能重复.应用于去重 增加:set1.add('元素')--->将元素无序的插入集合set1中set1.update("元 ...
随机推荐
- 初识Python类
吐槽:学习面向对象就像你追一个女神一样,刚刚有点感觉了,过几天又陷入绝望的感觉,很蛋疼. 类的语法 class Person(object): print("learning class&q ...
- 通过XHR API来下载和上传图片
1.不用HTML中的img标签来下载图片,通过XHR api来下载图片: var xhr = new XMLHttpRequest(); xhr.open('GET','/img/tooth-int ...
- Unity Shader Lab
http://docs.unity3d.com/460/Documentation/Manual/SL-BuiltinValues.html http://docs.unity3d.com/Manua ...
- Apache源码包安装和子配置文件介绍--update.2014-12-5
安装apache: 官网:http://httpd.apache.org/download.cgi#apache24 1.wget http://mirror.bit.edu.cn/apache//h ...
- .NET获取服务器信息,如服务器版本、IIS等
.NET获取服务器信息,如服务器版本.IIS等 .NET获取服务器信息,如服务器版本.IIS版本.数据库大小.网站系统空间占用大小.网站部署路径等等 .NET获取系统环境信息 #region 返回操作 ...
- .NET软件开发与常用工具清单(转)
http://www.cnblogs.com/smileberry/p/4047835.html
- validate jquery 注册页面使用实例 详解
官方使用文档:http://jqueryvalidation.org/documentation/ 参考资料:http://www.w3cschool.cc/jquery/jquery-plugin- ...
- centos 7.0安装花生壳
没有wget 先下载get 命令 yum -y install wget 下载位置/usr/local/src 解压目录 /usr/local/bin/phddns-2.0.6.x86_64 1.下 ...
- mysql计划任务每天定时执行
代码例子:CREATE EVENT `course_listener` ON SCHEDULE EVERY DAY STARTS '2012-07-18 00:00:00' ON COMPLETION ...
- LAMP环境CentOS6.4 PHP5.4随笔未整理
首先安装一些辅助的软件或者说是依赖的关系包. 1.安装libxml2: libxml是一个用来解析XML文档的函数库.它用C语言写成, 并且能为多种语言所调用,例如C语言,C++,XSH.C#, Py ...