เมื่อทำการยกน้ำหนักฉันต้องการสร้างน้ำหนักที่เฉพาะเจาะจงโดยติดแผ่นเหล็กหลายแผ่นเข้ากับแท่ง
ฉันมีแผ่นต่อไปนี้:
- 6 แผ่นละ 1 กิโลกรัม
- 6 จานละ 2.5 กก
- 6 จานละ 5 กิโลกรัม
- 6 จานละ 10 กิโลกรัม
แถบน้ำหนัก 10 กิโลกรัม
มันได้รับอนุญาตเท่านั้นที่จะแนบแผ่นเป็นคู่ - พวกเขาจะถูกแนบที่ปลายแต่ละด้านของบาร์และการจัดเรียงที่ปลายทั้งสองจะต้องสมมาตรอย่างสมบูรณ์ (เช่นการแนบแผ่น 5 กิโลกรัมสองที่ปลายด้านหนึ่งและแผ่น 10 กิโลกรัมที่ ห้ามมิให้ใช้ปลายอีกข้างเพื่อเหตุผลด้านความปลอดภัย)
จัดทำโปรแกรมหรือฟังก์ชั่นที่บอกฉันว่าฉันต้องใช้แผ่นจำนวนเท่าไหร่เพื่อที่จะได้น้ำหนักรวมที่กำหนด อินพุตเป็นจำนวนเต็มมากกว่า 11 ผลลัพธ์คือ list / array / string จำนวน 4 ตัว หากเป็นไปไม่ได้ที่จะรวมเพลตที่มีอยู่เพื่อรับน้ำหนักเป้าหมายให้ส่งออกอาร์เรย์ศูนย์ / ว่างเปล่าสตริงที่ไม่ถูกต้องโยนข้อยกเว้นหรือบางอย่าง
หากมีการแก้ปัญหาหลายอย่างรหัสจะต้องส่งออกเพียงครั้งเดียว (ไม่ได้ให้ผู้ใช้เลือก - เขายุ่งเกินไปกับสิ่งอื่น ๆ )
กรณีทดสอบ:
12 -> [2 0 0 0] - 2 plates of 1 kg plus the bar of 10 kg
13 -> [0 0 0 0] - a special-case output that means "impossible"
20 -> [0 0 2 0] - 2 plates of 5 kg + bar
20 -> [0 4 0 0] - a different acceptable solution for the above
21 -> [6 2 0 0] - 6 plates of 1 kg + 2 plates of 2.5 kg + bar
28 -> [0 0 0 0] - impossible
45 -> [0 2 6 0] - a solution for a random number in range
112 -> [2 4 6 6] - a solution for a random number in range
121 -> [6 6 6 6] - maximal weight for which a solution is possible
หากรหัสของคุณส่งออกตัวเลขในลำดับที่ตรงกันข้าม (จากแผ่นหนาไปจนถึงสีอ่อน) โปรดระบุสิ่งนี้อย่างชัดเจนเพื่อหลีกเลี่ยงความสับสน