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

ตรวจสอบการจัดวางถ้วยและจานรองบนชั้นวาง (Python)

โจทย์: มีถ้วย 3 ประเภท (อาร์เรย์ p) และจานรอง 3 ประเภท (อาร์เรย์ q) มีชั้นวาง m ชั้น ตรวจสอบว่าจัดได้หรือไม่

เงื่อนไข: 1) ชั้นใดชั้นหนึ่งใส่ได้แค่ถ้วย หรือ จานรอง (ไม่ผสม) 2) ชั้นละสูงสุด 5 ถ้วย 3) ชั้นละสูงสุด 10 จานรอง

ตัวอย่าง: p=[4,3,7], q=[5,9,10], m=11 → ถ้วยรวม 14 ต้อง 3 ชั้น, จานรวม 24 ต้อง 3 ชั้น → รวม 6 ≤ 11 → True

อัลกอริทึม

  1. sum_p = sum(p), sum_q = sum(q)
  2. ชั้นสำหรับถ้วย = ceil(sum_p / 5) = (sum_p + 4) // 5
  3. ชั้นสำหรับจาน = ceil(sum_q / 10) = (sum_q + 9) // 10
  4. ถ้า total_shelves ≤ m → True

ตัวอย่างโค้ด

def is_valid(p, q, m):
    sum_p = sum(p)
    sum_q = sum(q)
    shelves_cups = (sum_p + 5 - 1) // 5  # ceil division
    shelves_saucers = (sum_q + 10 - 1) // 10
    return shelves_cups + shelves_saucers <= m

p = [4, 3, 7]
q = [5, 9, 10]
m = 11
print(is_valid(p, q, m))  # True

ผลลัพธ์

True

สรุป: โจทย์คณิตศาสตร์พื้นฐาน ใช้ ceiling division คำนวณชั้นขั้นต่ำแยกประเภท รวมกันเทียบกับ m