nyoj                 一种排序

描述

现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复;还知道这个长方形的宽和长,编号、长、宽都是整数;现在要求按照一下方式排序(默认排序规则都是从小到大);

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

cpp:

#include<stdio.h>
#include<stdlib.h>
#define MAX 1000
#define swap(a,b) {t=a;a=b;b=t;}
int t;
struct node
{int no;int l;int w;
};
node a[MAX];
int cmp(const void *a,const void *b)
{struct node *c=(node *)a;struct node *d=(node *)b;if(c->no==d->no){if(c->l==d->l){return c->w-d->w;}else return c->l-d->l;}else return c->no-d->no;
}
int main()
{int T;scanf("%d",&T);while(T--){int m,i;scanf("%d",&m);for(i=0;i<m;i++){scanf("%d%d%d",&a[i].no,&a[i].l,&a[i].w);if(a[i].l<a[i].w) swap(a[i].l,a[i].w);}qsort(a,m,sizeof(node),cmp);for(i=0;i<m-1;i++){if(a[i].no==a[i+1].no&&a[i].l==a[i+1].l&&a[i].w==a[i+1].w)continue;printf("%d %d %d\n",a[i].no,a[i].l,a[i].w);}printf("%d %d %d\n",a[m-1].no,a[m-1].l,a[1].w);}return 0;
}

qsort 三级排序相关推荐

  1. qsort函数排序数据 and 模拟实现qosrt函数的功能(详解)

    前言:内容包括使用库函数qsort排序任意类型的数据,模拟实现qsort函数(冒泡排序的逻辑) 我们先了解qsort函数的语法:qsort函数默认按照升序排序数据 void qsort (void* ...

  2. qsort(),sort()排序函数

     一.qsort()函数 功 能: 使用快速排序例程进行排序 头文件:stdlib.h 用 法: void qsort(void *base,int nelem,int width,int (*f ...

  3. 利用qsort二级排序

    qsort int comp(const void *a,const void *b) { struct node*c=(node*)a; struct node*d=(node*)b; if(c-& ...

  4. C语言标准库函数qsort( )——数据排序

    大家好!我是保护小周ღ,本期为大家带来的是深度解剖C语言标准库函数 qsort(),qsort()函数他可以对任意类型的数据排序,博主会详细解释函数使用方法,以及使用快速排序的左右指针法模拟实现函数功 ...

  5. qsort函数排序举例

    使用qsort函数快速排序应用举例 这篇博客是用qsort函数来快速排列float型数据,分别按照年龄(int型).姓名(char型)排列结构体.看懂就看懂,看不懂我也不想解释了. 简略解释一下qso ...

  6. C++之指针探究(十五):回调函数应用之qsort排序

    相关博文:C++之指针探究(十三):函数指针数组 相关博文:C++之指针探究(十二):指针.下标.数组及其作函数参数探究 相关博文:C++之指针探究(十一):函数名的本质和函数指针 相关博文:C++之 ...

  7. c语言qsort函数简介,C语言排序函数—qsort函数

    前言: 在一些编程题中经常需要你按照某个指标按照从小到大或从大到小输出一些数据,这时你可以自己写一个排序函数进行排序,但是其实C语言函数库中就有一个排序函数--qsort函数,使用它可以节省你单独写排 ...

  8. qsort — c语言中自带的排序函数(附带void*、回调函数知识点

    因为总是忘记有qsort这个函数,导致遇到需要排序的题的时候,总是要写着类似的代码,所以特此单独把qsort拿出来单独整理一遍,让自己能够熟练掌握,也以免之后忘记了qsort可以拿自己的文章看. 目录 ...

  9. C语言之qsort函数进行排序

    目录 qsort()介绍 qsort()函数定义 qsort()函数的使用 对整型数据进行排序 排序结构体数据 使用冒泡排序模拟实现qsort()函数 qsort()介绍 qsort()为库函数 全称 ...

最新文章

  1. php mysql 查询 where_PHP MySQL Where 子句
  2. mysql sum 为 0 的解决方法
  3. Use After Free Tutorial
  4. 液冷模块是什么?有什么作用与意义?
  5. POI的入门:绘制图形
  6. Java中常用集合类对比_集合比较
  7. mysql外键猫头,SQL进阶
  8. linux string
  9. 虚拟现实设备排行榜(2016年3月27日)
  10. 未来五年,iOS 开发如何前行?
  11. 各种 IntelliJ IDEA 酷炫插件推荐
  12. 黑月MySQL_黑月编译器插件
  13. 远程计算机用户名win7,win7局域网远程控制的方法(图文)
  14. outlook qr码在哪里_条码生成软件如何批量生成DPM码
  15. Python_oldboy_自动化运维之路_面向对象2(十)
  16. 如何通过rancher部署k8s集群
  17. 兼容性向前还是向后_向后兼容性与向前兼容性
  18. 使用msf创建木马使用脚本
  19. 2020年远程面试全攻略
  20. Java零基础学习Day01(搭配视频)

热门文章

  1. ubuntu下安装拼音输入法ibus
  2. .NET MVC异步调用中的Session问题
  3. WeakReference带来了什么
  4. java守护线程和用户线程的区别
  5. python进程通信方式有几种_python全栈开发基础【第二十一篇】互斥锁以及进程之间的三种通信方式(IPC)以及生产者个消费者模型...
  6. 解决:pip警告!DEPRECATION: The default format will switch to columns in the future.
  7. 关于在新建的package中用SetContentView()函数时无法找到已创建的R.layout的布局文件的的问题的解决办法
  8. 手写数字识别中多元分类原理_广告行业中那些趣事系列:从理论到实战BERT知识蒸馏...
  9. 深入浅出WPF之Binding的使用(二)
  10. xcode8 崩溃问题