Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tìm số hình chữ nhật tạo thành vuông lớn nhất trong Python

Giả sử ta có mảng rect với rect[i] = [len_i, wid_i] là chiều dài và rộng của hình chữ nhật thứ i. Ta có thể cắt hình chữ nhật thứ i để tạo vuông cạnh k nếu k <= len_i và k <= wid_i. Ví dụ: hình chữ nhật [4,6] có thể cắt thành vuông cạnh tối đa 4. Xét maxLen là cạnh vuông lớn nhất có thể tạo từ các hình chữ nhật cho trước. Ta phải tìm số hình chữ nhật có thể tạo vuông cạnh maxLen.

Ví dụ: rect = [[6,9],[4,10],[6,13],[17,6]], kết quả là 3 vì các cạnh vuông lớn nhất là [6, 4, 6, 6], có 3 hình chữ nhật tạo được vuông lớn nhất.

Giải thuật

  1. m := []
  2. Với mỗi r trong rect: thêm min(r) vào m
  3. Đếm số lần xuất hiện của max(m) trong m và trả về

Ví dụ (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))

Input

[[6,9],[4,10],[6,13],[17,6]]

Output

3