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("元 ...
随机推荐
- MSSQL数据库索引的应用
一.索引的概念 索引就是加快检索表中数据的方法.数据库的索引类似于书籍的索引.在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息.在数据库中,索引也允许数据库程序迅速地找到表中的数据,而 ...
- 关于win10输入法问题(打不出中文)解决方法
提问过windous10打不出字,通过安装第三方输入法和所有有关切换的快捷键都没用,现在找到了解决方法 win键+x,打开命令提示符,输入ctfmon,回车 这样就能看到桌面右下角的输入法上面的叉叉消 ...
- Lua 之 userdata
Lua 之 userdata 在Lua中可以通过自定义类型(user data)与C语言代码更高效.更灵活的交互,从而扩展Lua能够表达的类型. full userdata full userdata ...
- iOS项目重命名以及Xcode修改Scheme名称图文详解 (yoowei)
在iOS开发中,有时候想改一下项目的名字,都会遇到很多麻烦.温馨提醒:记得备份. 看到项目名称,总感觉有点low,所以尝试着要将其更改一下. 项目原结构如下: 更改后的项目结构如下: 下面开始更改操作 ...
- 用户信息 Froms验证票证
Froms票证是为了存储一些有用信息在客户端..一般都与Cookie一起使用.. , entity.LoginName, DateTime.Now, DateTime.Now.AddMonths( ...
- input实时监听value change
oninput ie9+,otheronpropertychange ie6-8 js使用 var el = docuemnt.getElementById('id'); if('oninput' ...
- Python开发【第十一篇】:JavaScript
JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一.如何编写 1.J ...
- XML模块
XML 例子: # -*- encoding:utf-8 -*- import requests from xml.etree import ElementTree as ET f = request ...
- C语言动态内存分配
考虑下面三段代码: 片段1 void GetMemory(char *p) { p = (); } void Test(void) { char *str = NULL; GetMemory(str) ...
- php后台多用户权限组思路与实现程序代码
网站开发少不了有网站后台,有了后台自然要对用户有同角色来分配一下,特别是多用户系统的情况下,如我一个系统要有多个管理员,那么我这些管理要分成,编辑,友情连接,管理员等,那我们要有权限和角色分配,今天我 ...