[一种排序]
首先使用结构体保存这个长方形的特点(编号,长,宽);
然后输入每个信息同时对长宽进行位置交换(保证长>宽);
使用sort函数对(0,m)区间内的所有长方形按照Judge()的规则进行排序;
最后用tem1,tem2,tem3保存每个长方形的信息与所有长方形比较,如果不同就打印;
*(因为之前已经做过排序所以相同的长方形已经在相邻的区间内,所以不会打印出来相同的长方形);
#include<iostream>
#include<algorithm>
using namespace std;
struct Rangle {
int card;
int length;
int width;
}RangleArray[1000];
bool Judge(Rangle a_Rangle, Rangle b_Rangle) {
if (a_Rangle.card != b_Rangle.card) {
return a_Rangle.card < b_Rangle.card;
}
else {
if (a_Rangle.length != b_Rangle.length) {
return a_Rangle.length < b_Rangle.length;
}
else {
return a_Rangle.width < b_Rangle.width;
}
}
}
int main() {
int n;
cin >> n;
while (n--) {
int m;
cin >> m;//rangles
for (int i = 0; i < m; i++) {
cin >> RangleArray[i].card >> RangleArray[i].length >> RangleArray[i].width;
if (RangleArray[i].length < RangleArray[i].width) {
int temp = RangleArray[i].length;
RangleArray[i].length = RangleArray[i].width;
RangleArray[i].width = temp;
}
}
sort(RangleArray, RangleArray + m, Judge);
int tem1 = -1, tem2 = -1, tem3 = -1;
for (int i = 0; i < m; i++) {
if (tem1 != RangleArray[i].card || tem2 != RangleArray[i].length || tem3 != RangleArray[i].width) {
cout << RangleArray[i].card << ' ' << RangleArray[i].length << ' ' << RangleArray[i].width << endl;
}
tem1 = RangleArray[i].card;
tem2 = RangleArray[i].length;
tem3 = RangleArray[i].width;
}
}
return 0;
}