一种排序(set集合 结构体的应用)
2017-10-20 15:17
260 查看
一种排序
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述
现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复;还知道这个长方形的宽和长,编号、长、宽都是整数;现在要求按照一下方式排序(默认排序规则都是从小到大);
输入
第一行有一个整数 0
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述
现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复;还知道这个长方形的宽和长,编号、长、宽都是整数;现在要求按照一下方式排序(默认排序规则都是从小到大);
1.按照编号从小到大排序 2.对于编号相等的长方形,按照长方形的长排序; 3.如果编号和长都相同,按照长方形的宽排序; 4.如果编号、长、宽都相同,就只保留一个长方形用于排序,删除多余的长方形;最后排好序按照指定格式显示所有的长方形;
输入
第一行有一个整数 0
#include<iostream> #include<stdio.h> #include<algorithm> #include<set> using namespace std; int num =0; struct Shape { int indx; int l; int w; }; class Mysort { public: bool operator()(const Shape &a,const Shape &b) { if(a.indx != b.indx)//按照indx从小到大进行排序 return a.indx < b.indx; else if(a.l != b.l )//按照长度进行从小到大进行排序 return a.l < b.l; else return a.w < b.w;//按照宽度进行从小到大进行排序 } }; void OUTPUT(const Shape &a) { printf("%d %d %d\n",a.indx,a.l,a.w); } int main() { int ncase; scanf("%d",&ncase); while(ncase--) { int mm; scanf("%d",&mm); set<Shape,Mysort> pp; while(mm--) { Shape a; int l ,w; scanf("%d%d%d",&a.indx,&l,&w); a.l = max(l,w); a.w = min(l,w); pp.insert(a); } for_each(pp.begin(),pp.end(),OUTPUT); } return 0; }
相关文章推荐
- 对结构体二级排序的应用 —— 一种排序问题
- 一种排序STL在set中的结构体排序
- Hrbust-1287-数字去重和排序II(set集合容器应用)
- java的Set、Map、Deque集合;实现排序
- Hibernate中Set集合排序
- 迭代器的应用和集合进阶List&Set
- set集合容器的妙用(用于去重,排序)
- 【Redis缓存机制】7.SortSet排序集合类型操作
- redis 的使用 (sort set排序集合类型操作)
- 黑马程序员________Java集合List和Set的原理应用学习笔记
- C#例题:输入学生学号,姓名,分数,然后根据分数进行排序。这个题是用集合和结构体来做,与上一题不同。掌握基础知识很重要
- 对hibernate的set集合进行排序2
- 对hibernate的set集合进行排序
- Hibernate-多关系时对应的多个关联对象Set集合进行排序
- ipnone CGRectInset 该结构体的应用
- 简单结构体的应用(商品排序C语言)
- C++ STL 有关于SET集合的基本操作,本文不包含涉及到自定义数据类型的排序
- Java://Comparator、Comparable的用法(按照要求将set集合的数据进行排序输出):
- 集合接口(List,Set,Map)List(序列)排序--5,6
- CSU-1409 集合的并(水~结构体排序)