一种排序
2015-07-12 18:18
363 查看
一种排序
[align=center][/align]时间限制:3000 ms | 内存限制:65535 KB
[align=center][/align]
[align=center]难度:3[/align]
描述 现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复;还知道这个长方形的宽和长,编号、长、宽都是整数;现在要求按照一下方式排序(默认排序规则都是从小到大);
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
#include<stdio.h> #include<stdlib.h> struct Rec { int num,l,w; }; int cmp(const void *a,const void *b) { Rec *c=(Rec *)a; Rec *d=(Rec *)b; if(c->num!=d->num) { return c->num-d->num; } else if(c->l!=d->l) { return c->l-d->l; } else return c->w-d->l; } int main() { int k; Rec r[1005]; scanf("%d",&k); while(k--) { int n,i,t; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d%d%d",&r[i].num,&r[i].l,&r[i].w); if(r[i].l<r[i].w) { t=r[i].l; r[i].l=r[i].w; r[i].w=t; } } qsort(r,n,sizeof(r[0]),cmp); printf("\n%d %d %d\n",r[0].num,r[0].l,r[0].w); for(i=1;i<n;i++) { if(!(r[i].num==r[i-1].num&&r[i].l==r[i-1].l&&r[i].w==r[i-1].w)) printf("%d %d %d\n",r[i].num,r[i].l,r[i].w); } } return 0; }
相关文章推荐
- 交换排序之快速排序
- 关于值栈
- About Django
- 建站笔记2-数据库密码修改和phpmyadmin的使用
- iBatis简单入门教程
- 喷水装置(一)
- html5标签及语义化
- MATLAB 复制文件
- ZOJ3629 Treasure Hunt IV(找到规律,按公式)
- uva 10483(暴力)
- 横竖屏切换时,禁止activity重新创建,android:configChanges="keyboardHidden|orientation" 不起作用
- Linux命令之find(二)
- Linux高级文件系统管理之磁盘阵列简介
- 自定义表单样式之checkbox和radio
- 用实例详细讲解将PSD转成HTML&CSS
- jQuery -> bind / live / delegate 终结者 - on
- SpringMVC返回字符串类型Date实现方法
- javascript跨域访问探索之旅
- 2015.7.7js-07-2(基础)
- Web中树形数据(层级关系数据)的实现—以行政区树为例(二)