สมมติว่าเรามีสองค่า n และ m; เราต้องหาจำนวนสี่เหลี่ยมขนาด 2x1 ที่สามารถกำหนดได้ภายในสี่เหลี่ยมขนาด n x m มีเงื่อนไขเล็กน้อยที่เราต้องพิจารณา -
-
สี่เหลี่ยมเล็กๆ สองรูปไม่สามารถทับซ้อนกันได้
-
สี่เหลี่ยมเล็ก ๆ ทุกอันอยู่ภายในอันที่ใหญ่กว่าอย่างสมบูรณ์ อนุญาตให้แตะขอบของสี่เหลี่ยมที่ใหญ่กว่าได้
ดังนั้นหากอินพุตเป็นแบบ
n =3, m =3 จากนั้นผลลัพธ์จะเป็น 4
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ถ้า n mod 2 เหมือนกับ 0 แล้ว
-
ผลตอบแทน(n / 2) * ม
-
-
มิฉะนั้นเมื่อ m mod 2 เป็น 0 แล้ว
-
ผลตอบแทน(m / 2) * n
-
-
ผลตอบแทน (n * m - 1) / 2
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def count_rect(n, m): if (n % 2 == 0): return (n / 2) * m elif (m % 2 == 0): return (m // 2) * n return (n * m - 1) // 2 n = 3 m = 3 print(count_rect(n, m))
อินพุต:
3, 3
ผลลัพธ์
4