ภารกิจของคุณคือการสร้างอัลกอริทึม (โปรแกรมหรือฟังก์ชั่น) ที่สามารถเพิ่มประสิทธิภาพการบรรจุผลไม้จากสายพานลำเลียงลงในถุงเพื่อส่งไปยังผู้ค้าปลีกเพื่อปรับให้เหมาะสมกับจำนวนถุงมากที่สุด
กระเป๋าแต่ละใบจะต้องมีน้ำหนักอย่างน้อยจำนวนหนึ่ง แต่ส่วนเกินใด ๆ จะสูญเสียกำไรเนื่องจากน้ำหนักนั้นสามารถใช้เพื่อเติมถุงอื่นได้ เครื่องบรรจุถุงของคุณมีn
ผลไม้ที่มองจากคิวเสมอและอาจเลือกที่จะเพิ่มn
ผลไม้ใด ๆ เหล่านี้ลงในถุง (ถุงเดียว) ที่กำลังดำเนินการ ไม่สามารถดูเกินn
องค์ประกอบแรกในคิว โปรแกรมรู้เสมอว่ามีน้ำหนักอยู่ในกระเป๋าเท่าไหร่
อีกวิธีในการมองเห็นสิ่งนี้คือการมีสายพานลำเลียงที่มีพื้นที่รับน้ำหนักขนาดใหญ่n
ในตอนท้ายจากจุดที่ผลไม้ต้องถูกนำไปก่อนที่ผลไม้ใหม่จะมาถึง ผลไม้ที่เหลือและถุงที่ไม่เต็มในตอนท้ายจะถูกทิ้ง
ปัจจัยการผลิต
- รายการ / อาร์เรย์ของน้ำหนักผลไม้ในคิว (จำนวนเต็มบวก)
- น้ำหนักรวมขั้นต่ำสำหรับถุง (จำนวนเต็มบวก)
- Lookahead
n
(จำนวนเต็มบวก)
เอาท์พุต
อัลกอริทึมของคุณควรกลับไปหาน้ำหนักของผลไม้ในถุงด้วยวิธีใดก็ตามที่สะดวกสำหรับคุณและภาษาของคุณไม่ว่าจะเป็น stdin หรือค่าตอบแทนหรืออย่างอื่น คุณควรจะสามารถรันโปรแกรมและคำนวณคะแนนในหนึ่งนาทีบนคอมพิวเตอร์ของคุณ
ตัวอย่าง
Total weight 1000, lookahead of 3 and fruit queue:
[171,163,172,196,156,175,162,176,155,182,189,142,161,160,152,162,174,172,191,185]
One possible output (indented to show how the lookahead affects the bagging):
[171,163,172, 156,175, 176]
[162, 155,182,189, 161,160]
[152,162,174,172,191,185]
เกณฑ์การให้คะแนน
อัลกอริทึมของคุณจะได้รับการทดสอบในการวิ่งหกครั้งในชุดส้ม 10,000 ชุดที่ฉันเตรียมไว้สำหรับคุณโดยมีตั้งแต่ 2 ถึง 7 รวมทั้งสองด้าน คุณจะบรรจุลงในถุงที่มีน้ำหนักอย่างน้อย 1,000 หน่วย โดยปกติแล้วส้มจะมีน้ำหนักเฉลี่ย 170 และค่าเบี่ยงเบนมาตรฐานเท่ากับ 13 ถ้าเป็นประโยชน์
คะแนนของคุณจะเป็นผลรวมของจำนวนถุงจากหกวิ่ง คะแนนสูงสุดชนะ ช่องโหว่มาตรฐานไม่ได้รับอนุญาต