题目描述:
现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复;还知道这个长方形的宽和长,编号、长、宽都是整数;现在要求按照一下方式排序(默认排序规则都是从小到大);
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
n = int(input())
for i in range(n):
lt = []
m = int(input())
for j in range(m):
d = {}
num = input()
num_list = num.split(' ')
d['number'] = int(num_list[0])
if int(num_list[1]) > int(num_list[2]):
d['width'] = int(num_list[1])
d['height'] = int(num_list[2])
else:
d['width'] = int(num_list[2])
d['height'] = int(num_list[1])
lt.append(d)
for i1 in range(len(lt) - 1):
for j1 in range(len(lt) - i1 - 1):
if lt[j1]['number'] > lt[j1 + 1]['number']:
t = lt[j1]
lt[j1] = lt[j1 + 1]
lt[j1 + 1] = t
elif lt[j1]['number'] == lt[j1 + 1]['number']:
if lt[j1]['width'] > lt[j1 + 1]['width']:
t = lt[j1]
lt[j1] = lt[j1 + 1]
lt[j1 + 1] = t
elif lt[j1]['width'] == lt[j1 + 1]['width']:
if lt[j1]['height'] > lt[j1 + 1]['height']:
t = lt[j1]
lt[j1] = lt[j1 + 1]
lt[j1 + 1] = t
elif lt[j1]['height'] == lt[j1 + 1]['height']:
lt[j1]['number'] = 0
lt[j1]['width'] = 0
lt[j1]['height'] = 0
for dt in lt:
if dt['number'] != 0:
print(dt['number'],dt['width'],dt['height'],sep=' ')