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

Chương trình đếm số người nhận được gói đồ ăn trong Python

Hội nghị có 2 loại người: ăn chay (0) và không chay (1). Có mảng packets (loại gói ăn) và people (hàng đợi ưu tiên). Người không được loại ưu tiên sẽ vào cuối hàng đợi. Tìm số người không nhận được gói ăn.

Ví dụ: people=[0,1,1,0], packets=[0,1,0,0] → 1. Có 2 người ăn không chay nhưng chỉ 1 gói không chay.

Giải thuật (Đếm tần suất)

  1. Đếm số người mỗi loại: temp_arr[0], temp_arr[1].
  2. Duyệt packets theo thứ tự:
    • Nếu còn người thích loại packets[k] (temp_arr[packets[k]] > 0): giảm đếm.
    • Ngược lại: dừng (các gói còn lại không ai lấy).
  3. Trả về len(packets) - k (số gói còn lại = số người không nhận được).

Ví dụ minh họa

def solve(people, packets):
    temp_arr = [0, 0]
    for person in people:
        temp_arr[person] += 1
    k = 0
    while k < len(packets):
        if temp_arr[packets[k]] > 0:
            temp_arr[packets[k]] -= 1
        else:
            break
        k += 1
    return len(packets) - k

print(solve([0,1,1,0], [0, 1, 0, 0]))

Đầu vào

[0,1,1,0], [0, 1, 0, 0]

Đầu ra

1