一种排序
-
描述
-
现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复;还知道这个长方形的宽和长,编号、长、宽都是整数;现在要求按照一下方式排序(默认排序规则都是从小到大);
1.按照编号从小到大排序
2.对于编号相等的长方形,按照长方形的长排序;
3.如果编号和长都相同,按照长方形的宽排序;
4.如果编号、长、宽都相同,就只保留一个长方形用于排序,删除多余的长方形;最后排好序按照指定格式显示所有的长方形;
利用sort对其排序,要考虑编号,长,宽,三种情况。
第一次用cin,cout,用的有点渣了。。。
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct ju
{
int num;
int length;
int width;
}p[1005];
bool cmp(ju a,ju b)
{
if(a.num==b.num)
{
if(a.length==b.length)
{
return a.width<b.width;
}
else return a.length<b.length;
}
else return a.num<b.num;
}
int main()
{
int n;
cin >> n;
while(n--)
{
int m;
cin>>m;
for(int i=0;i<m;i++)
{
int a,b;
cin>>p[i].num>>a>>b;
p[i].length=a>b?a:b;
p[i].width=a>b?b:a;
}
sort(p,p+m,cmp);
for(int i=0;i<m;i++)
{
if(i!=0&&p[i].num==p[i-1].num&&p[i].length==p[i-1].length&&p[i].width==p[i-1].width)
continue;
else cout<<p[i].num<<' '<<p[i].length<<' '<<p[i].width<<endl;
}
}
return 0;
}