ลองนึกภาพตารางWโดยHของสี่เหลี่ยมที่ล้อมรอบด้วยวงแหวน รายการจะถูกวางลงบนตารางดังนี้
รายการแรกที่สามารถวางบนตารางใด ๆ แต่รายการที่ตามมาจะต้องไม่เป็นภายในระยะแมนฮัตตัน Rของรายการใด ๆ ก่อนหน้า (ยังเป็นที่รู้จักกันเป็นย่าน Von Neumann ของช่วงR ) การเลือกตำแหน่งอย่างระมัดระวังช่วยให้การติดตั้งรายการจำนวนมากเข้ากับกริดก่อนที่จะไม่มีตำแหน่งที่ถูกต้องอีกต่อไป อย่างไรก็ตามให้พิจารณาถึงเป้าหมายตรงกันข้าม: จำนวนไอเท็มที่ต่ำที่สุดที่สามารถวางและไม่อยู่ในตำแหน่งที่ถูกต้องคืออะไร?
นี่คือโซนการยกเว้นรัศมี 5:
นี่คือโซนยกเว้นรัศมี 5 อีกครั้งคราวนี้อยู่ใกล้กับขอบเพื่อให้เห็นพฤติกรรมการห่อที่ชัดเจน:
อินพุต
สามจำนวนเต็ม:
- W : ความกว้างของกริด (จำนวนเต็มบวก)
- H : ความสูงของกริด (จำนวนเต็มบวก)
- R : รัศมีของเขตการยกเว้น (จำนวนเต็มไม่เป็นลบ)
เอาท์พุต
จำนวนเต็มNซึ่งเป็นจำนวนไอเท็มที่เล็กที่สุดที่สามารถวางเพื่อป้องกันตำแหน่งที่ถูกต้องเพิ่มเติม
รายละเอียด
- รัศมีศูนย์ให้เขตการยกเว้น 1 สี่เหลี่ยมจัตุรัส (หนึ่งรายการที่ถูกวางบน)
- รัศมีของ N ไม่รวมถึงโซนที่สามารถเข้าถึงได้ในขั้นตอน N orthogonal (จำได้ว่าขอบห่อ toroidally)
รหัสของคุณจะต้องใช้กับตัวพิมพ์เล็ก ๆ น้อย ๆ ของR = 0 แต่ไม่จำเป็นต้องทำงานกับW = 0 หรือH = 0
รหัสของคุณยังต้องรับมือกับกรณีที่R > WหรือR > H
กำหนดเวลาและกรณีทดสอบ
รหัสของคุณจะต้องสามารถจัดการกับกรณีทดสอบทั้งหมดและแต่ละกรณีทดสอบจะต้องเสร็จสิ้นภายใน 5 นาที สิ่งนี้ควรง่าย (ตัวอย่างโซลูชัน JavaScript ใช้เวลาสองสามวินาทีในแต่ละกรณีทดสอบ) การ จำกัด เวลาส่วนใหญ่จะยกเว้นวิธีการใช้กำลังดุร้ายที่สุด วิธีการตัวอย่างยังคงเป็นกำลังดุร้าย
หากรหัสของคุณเสร็จสมบูรณ์ภายใน 5 นาทีในเครื่องหนึ่ง แต่ไม่ใช่ในรหัสอื่นที่จะปิดพอ
กรณีทดสอบในรูปแบบอินพุต: ส่งออกเป็นW H R : N
5 4 4 : 1
5 4 3 : 2
5 4 2 : 2
5 4 1 : 5
7 5 5 : 1
7 5 4 : 2
7 5 3 : 2
7 5 2 : 4
8 8 8 : 1
8 8 7 : 2
8 8 6 : 2
8 8 5 : 2
8 8 4 : 2
8 8 3 : 4
7 6 4 : 2
7 6 2 : 4
11 7 4 : 3
11 9 4 : 4
13 13 6 : 3
11 11 5 : 3
15 14 7 : 2
16 16 8 : 2
ตัวอย่างเพื่อช่วยให้เห็นภาพและเล่นกับแนวคิด
ตัวอย่างการแก้ปัญหา (ungolfed)
เป็นเพียงตัวอย่างของเอาต์พุตขนาดเล็ก (เกิดจากรัศมีไม่น้อยกว่าความกว้างและความสูง) สามารถจัดการกับกรณีทดสอบใด ๆ แต่จะหมดเวลาและยอมแพ้สำหรับกรณีที่มีขนาดใหญ่ที่สุด