一种排序 sort cmp STL

发布时间:2014-10-22 19:41:57编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"一种排序 sort cmp STL",主要涉及到一种排序 sort cmp STL方面的内容,对于一种排序 sort cmp STL感兴趣的同学可以参考一下。

一种排序 时间限制: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 #include<algorithm> #include<iostream> using namespace std; struct ww { int b,c,k; }w[1002]; bool cmp(ww x,ww y) { if (x.b!=y.b) return x.b<y.b; else if(x.c!=y.c) return x.c<y.c; else return x.k<y.k; } int main() { int t,n,i; cin>>t; while(t--) { cin>>n; for(i=0;i<n;i++) { cin>>w[i].b>>w[i].c>>w[i].k; if(w[i].c<w[i].k) swap(w[i].c,w[i].k); //若长小于宽 则交换长和宽数据 } sort(w,w+n,cmp); cout<<w[0].b<<" "<<w[0].c<<" "<<w[0].k<<endl; for(i=1;i<n;i++) if(w[i-1].b!=w[i].b||w[i-1].c!=w[i].c||w[i-1].k!=w[i].k) cout<<w[i].b<<" "<<w[i].c<<" "<<w[i].k<<endl; } return 0; }


上一篇:BFS,DFS,DIJKSTRA算法基础练习
下一篇:hdu 1028 Ignatius and the Princess III

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款