网易雷火笔试
矩形排序
链接:https://www.nowcoder.com/questionTerminal/1e53179d01574379a5f85c7666d098d9?f=discussion
给定N个矩形,每个矩形宽W米高H米 请按以下规则将这N个矩形排序,输出排序后的矩形列表 排序规则: 面积小的矩形排在面积大的矩形前面 面积相同的矩形,按照宽高比排序,宽高比大的矩形排在宽高比小的矩形前面 宽高比的定义为 min(W/H, H/W) 面积和宽高比都相同的矩形,按照宽排序,宽度更小的矩形排在宽度更大的矩形前面
利用python中的sort函数,与元组具有的比较性可以在几行内完成。
import sys N = int(sys.stdin.readline()) WHs = list(map(int, sys.stdin.readline().split())) Ws = WHs[::2] Hs = WHs[1::2] Ss = [(Ws[i] * Hs[i], 1/min(Ws[i]/Hs[i], Hs[i]/Ws[i]), Ws[i], Hs[i]) for i in range(N)] Ss.sort() print(' '.join([f'{k[2]} {k[3]}' for k in Ss]))