網(wǎng)易雷火筆試
矩形排序
鏈接:http://fangfengwang8.cn/questionTerminal/1e53179d01574379a5f85c7666d098d9?f=discussion
給定N個(gè)矩形,每個(gè)矩形寬W米高H米 請(qǐng)按以下規(guī)則將這N個(gè)矩形排序,輸出排序后的矩形列表 排序規(guī)則: 面積小的矩形排在面積大的矩形前面 面積相同的矩形,按照寬高比排序,寬高比大的矩形排在寬高比小的矩形前面 寬高比的定義為 min(W/H, H/W) 面積和寬高比都相同的矩形,按照寬排序,寬度更小的矩形排在寬度更大的矩形前面
利用python中的sort函數(shù),與元組具有的比較性可以在幾行內(nèi)完成。
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]))