一种排序

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述
现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复;还知道这个长方形的宽和长,编号、长、宽都是整数;现在要求按照一下方式排序(默认排序规则都是从小到大);

1.按照编号从小到大排序

2.对于编号相等的长方形,按照长方形的长排序;

3.如果编号和长都相同,按照长方形的宽排序;

4.如果编号、长、宽都相同,就只保留一个长方形用于排序,删除多余的长方形;最后排好序按照指定格式显示所有的长方形;

输入
第一行有一个整数 0<n<10000,表示接下来有n组测试数据;
每一组第一行有一个整数 0<m<1000,表示有m个长方形;
接下来的m行,每一行有三个数 ,第一个数表示长方形的编号,

第二个和第三个数值大的表示长,数值小的表示宽,相等
说明这是一个正方形(数据约定长宽与编号都小于10000);

输出
顺序输出每组数据的所有符合条件的长方形的 编号 长 宽
样例输入
1
8
1 1 1
1 1 1
1 1 2
1 2 1
1 2 2
2 1 1
2 1 2
2 2 1
样例输出
1 1 1
1 2 1
1 2 2
2 1 1
2 2 1
来源
经典题目
上传者

iphxer

思路:不愧是经典水题....

#include<stdio.h>
#include<algorithm>
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
using namespace std;
struct REC
{int num;int length;int wide;
} p[1000];
int cmp(REC x,REC y)
{if(x.num!=y.num)//按照编号从小到大排序return x.num<y.num;if(x.length!=y.length)//对于编号相等的长方形,按照长方形的长排序;return x.length<y.length;if(x.wide!=y.wide)//如果编号和长都相同,按照长方形的宽排序return x.wide<y.wide;
}
//注意:如果编号、长、宽都相同,就只保留一个长方形用于排序,删除多余的长方形;最后排好序按照指定格式显示所有的长方形;
//大坑:第二个和第三个数值大的表示长,数值小的表示宽,相等
int main()
{int t,n;scanf("%d",&t);while(t--){scanf("%d",&n);int a,b,c;for(int i=0; i<n; i++){scanf("%d%d%d",&a,&b,&c);p[i].num=a;p[i].length=max(b,c);p[i].wide=min(b,c);}sort(p,p+n,cmp);for(int i=0; i<n; i++){if(p[i].num==p[i+1].num&&p[i].length==p[i+1].length&&p[i].wide==p[i+1].wide)continue;printf("%d %d %d\n",p[i].num,p[i].length,p[i].wide);}}return 0;
}

一种排序NYOJ 8相关推荐

  1. NYOJ 8 一种排序

    点击打开链接 一种排序 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复:还知道这个长方形的宽和长,编号.长. ...

  2. 数据结构(三) 用java实现七种排序算法。

    很多时候,听别人在讨论快速排序,选择排序,冒泡排序等,都觉得很牛逼,心想,卧槽,排序也分那么多种,就觉得别人很牛逼呀,其实不然,当我们自己去了解学习后发现,并没有想象中那么难,今天就一起总结一下各种排 ...

  3. Java两种排序方式快慢比较

    2019独角兽企业重金招聘Python工程师标准>>> Java中List的排序方式有两种,现在我们测试下这两种排序方式的快慢吧,我们需要用到两个类, 一个是运行程序的Main类,另 ...

  4. php主要算法设计,四种排序算法设计(PHP)

    标签 详细分析 /** * 四种排序算法设计(PHP) * * 1) 插入排序(Insertion Sort)的基本思想是: 每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当 ...

  5. 位图排序 大数据_干货分享:大话12种排序算法

    干货分享:大话12种排序算法 常见的排序算法: 快速排序.堆排序.归并排序.选择排序 插入排序.二分插入排序 冒泡排序.鸡尾酒排序 桶排序.计数排序.基数排序.位图排序 技能点: 1.归并排序在O(N ...

  6. 基于FPGA的几种排序算法总结

    目录 1      冒泡法和比较排序法 1.1        算法原理 1.2        仿真结果 1.3        算法优缺点 2      并行全比较排序法 2.1        算法原理 ...

  7. php常见的几种排序以及二分法查找

    <?php 1.插入排序 思想: 每次将一个待排序的数据元素插入到前面已经排好序的数列中,使数列依然有序,知道待排序数据元素全部插入完为止. 示例: [初始关键字] [49] 38 65 97 ...

  8. 10种排序算法基础总结

    基于比较的排序: 基础排序:  冒泡排序:谁大谁上,每一轮都把最大的顶到天花板 效率太低--掌握swap. 选择排序:效率较低,但经常用它内部的循环方式来找最大值和最小值. 插入排序:虽然平均效率低, ...

  9. 郑州尚学堂:JAVA常用4种排序方法

    JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法. 当然 程序中最简单的使用就是:快速排序和冒泡排序,插入排序的使用更具有技巧性,选择排序则过于复杂,冗杂 ...

  10. 五种排序方式gif展示【python】

    简述 有五种排序方式. 文章目录 简述 排序 简单排序 冒泡排序 选择排序 归并排序 快速排序 排序 简单排序 import numpy as np import matplotlib.pyplot ...

最新文章

  1. Angular 可观察对象(Observable)
  2. sqlserver2008 R2中查找未使用过的索引
  3. SQL Server中如何识别、查找未使用的索引(unused indexes)
  4. python常用内置模块-python 常用内置模块使用
  5. Luogu P5244 [USACO2019Feb Platinum] Mowing Mischief (动态规划、决策单调性)
  6. Count Primes(leetcode204)
  7. html去掉父元素样式,CSS清除浮动使父级元素展开的三个方法
  8. jQuery对象与dom对象的转换
  9. maven 打包指定依赖包_Maven打包成Jar文件时依赖包的问题
  10. socket 获取回传信息_java中使用网络通信(Socket)来传输对象
  11. java 类库_Java基础类库
  12. 11 MySQL视图
  13. 【论文翻译】Cluster Contrast for Unsupervised Person Re-Identification(2021)
  14. onsubmit阻止表单提交的一种方式
  15. 中国科学院院士徐宗本:人工智能的基石是数学
  16. 智能智造技术理论 第二讲 智能制造定义与现状
  17. java虚拟机学习笔记1
  18. 罗斯蒙特3051S2TG4A2E11A1AB4M5K5D1压力变送器
  19. 鸿蒙版开发实践,有点牛逼哦!- 京东APP
  20. android校园淘论文,基于安卓的校园寻物app的设计与实现--大学生毕业论文(设计).doc...

热门文章

  1. Android微信分享功能实例+demo
  2. 理解SNS系列之二:更进一步,近观SNS
  3. Google提供的超强圆角效果
  4. 【问题解决】c.a.c.n.c.NacosPropertySourceBuilder : parse data from Nacos error,dataId:xxxxxx.yml
  5. 创建一个SpringBoot项目(IDEA版本,保姆级教程)
  6. avs php,linux 安装AdultVideoScript (AVS)全教程
  7. 时间字段加一秒_面试Java后端却问我时间轮(Time Wheel)算法,面试官没想到我看过Dubbo源码!...
  8. lstm 变长序列_Pytorch 是如何处理变长序列的
  9. android四级菜单,android实现菜单三级树效果
  10. LintCode—删除链表中的元素(452)