Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาจำนวนสี่เหลี่ยมที่ตัดได้เป็น Square ใหญ่สุด (Python)

โจทย์

มีอาร์เรย์ rect ที่แต่ละ元素เป็น [len_i, wid_i] สามารถตัดเป็น Square ด้าน k ได้ถ้า k <= len_i และ k <= wid_i หา maxLen = ด้าน Square ใหญ่สุดจากทุกสี่เหลี่ยม แล้วนับว่ามีกี่สี่เหลี่ยมที่ตัดได้ด้าน maxLen

ตัวอย่าง: rect = [[6,9],[4,10],[6,13],[17,6]] → ด้าน Square: [6,4,6,6] → Max = 6 → มี 3 สี่เหลี่ยม

อัลกอริธึม

  1. หา Min ของแต่ละสี่เหลี่ยม (ด้าน Square สูงสุดของสี่เหลี่ยมนั้น)
  2. หา Max ของค่า Min ทั้งหมด → maxLen
  3. นับจำนวนที่เท่ากับ maxLen

โค้ด Python


def solve(rect):
    m = []
    for r in rect:
        m.append(min(r))
    return m.count(max(m))

rect = [[6,9],[4,10],[6,13],[17,6]]
print(solve(rect))  # Output: 3

Input / Output

Input:  [[6,9],[4,10],[6,13],[17,6]]
Output: 3