มี List สี่เหลี่ยม [Length, Breadth] หมุน 90 องศาได้ (สลับ L<->B) ต้องเช็คว่าเรียงให้ Breadth Non-increasing ได้หรือไม่
เช่น Input rects = [[4, 5], [5, 7], [4, 6]] Output True หมุน 2 ตัวท้าย Breadths: [5,5,4]
ขั้นตอนแก้ (Greedy):
- m = ค่ามาก (Infinity)
- แต่ละ Rect: ถ้า max(L,B) <= m ใช้ max; else if min(L,B) <= m ใช้ min; else False
- อัพเดท m = ค่าที่เลือก
ตัวอย่างโค้ด
def solve(rect):
m = 99999
for i in range(len(rect)):
if max(rect[i][0], rect[i][1]) <= m:
m = max(rect[i][0], rect[i][1])
elif min(rect[i][0], rect[i][1]) <= m:
m = min(rect[i][0], rect[i][1])
else:
return False
return True
rects = [[4, 5], [5, 7], [4, 6]]
print(solve(rects))
Input
[[4, 5], [5, 7], [4, 6]]
Output
True