ฉันมี $ 15 ในกระเป๋าของฉัน ฉันอยู่ในร้านที่ไม่เปลี่ยนแปลง ในขณะที่เรียกดูฉันพบรายการที่ราคา 10 ดอลลาร์ (รวมภาษี) ฉันสามารถซื้อของชิ้นนั้นได้โดยไม่เสียเงินหรือไม่?
ในกรณีนี้คำตอบคือใช่ ไม่ว่าเงิน $ 15 ของฉันจะถูกแบ่งเป็นอย่างไร (หนึ่ง 10 และหนึ่ง 5 หรือสาม 5s หรืออย่างอื่น) ฉันจะได้ $ 10 ที่แน่นอนเสมอ
เป็นตัวอย่างที่สองฉันมี $ 0.16 ในกระเป๋าของฉัน ฉันต้องจ่ายเงินเป็นจำนวนเท่าใด?
Possible Divisions:
0.01, 0.05, 0.10
0.01, 0.05 x 3
0.01 x 16
Guaranteed Exact Change:
0.01, 0.05, 0.06, 0.10, 0.11, 0.15, 0.16
จะทำอย่างไรถ้าฉันมี $ 0.27 ในกระเป๋าของฉัน
Possible Divisions:
0.01 x 2, 0.25
0.01 x 2, 0.05, 0.10 x 2
0.01 x 2, 0.05 x 3, 0.10
0.01 x 2, 0.05 x 5
0.01 x 27
Guaranteed Exact Change:
0.01, 0.02, 0.25, 0.26, 0.27
ในกรณีข้างต้นมีเพียงไม่กี่เงินที่ฉันจะเปลี่ยนแปลงได้อย่างสมบูรณ์แบบเสมอ
งานของคุณ
เขียนโปรแกรมที่สั้นที่สุด (หรือฟังก์ชั่นที่ตั้งชื่อ) ซึ่งใช้เวลา A) จำนวนเงินจำนวนเต็มและ B) รายการของรายการที่เป็นไปได้ในฐานะอินพุตและส่งออกรายการจำนวนเงินที่ฉันต้องมีการเปลี่ยนแปลงที่สมบูรณ์แบบ อินพุตอาจเป็น STDIN หรืออาร์กิวเมนต์สำหรับโปรแกรมหรือฟังก์ชัน ฉันจะไม่เข้มงวดกับการจัดรูปแบบอินพุตมากนัก สามารถจับคู่กับวิธีการจัดรูปแบบภาษาของคุณ
อาจเป็นคำอธิบายที่ละเอียดมากขึ้น
ฉันมีเงินจำนวนหนึ่งอยู่ในกระเป๋าของฉันซึ่งเกิดขึ้นจากการสาธิตของสกุลเงินที่เป็นไปได้ หากฉันมี 8 ดอลลาร์และฉันรู้ว่าสกุลเงินที่เป็นไปได้คือ $ 2 และ $ 3 นั่นก็คือมีตั๋วหลายใบที่รวมอยู่ในกระเป๋าของฉัน เหล่านี้คือ2+2+2+23+3+2และ เพื่อให้สามารถผลิตจำนวนเงินที่แน่นอนฉันต้องสามารถผลิตจำนวนนั้นโดยใช้ตั๋วเงินที่มีอยู่ในกระเป๋าของฉันเท่านั้น ถ้าฉันมีสี่ 2 วินาทีฉันก็สามารถผลิต2, 4, 6, or 8ได้ ถ้าฉันมีสอง 3s และ 2 ผมสามารถผลิต2, 3, 5, 6, or 8ตั้งแต่ผมไม่ทราบว่าของชุดเหล่านี้ที่จริงผมมีในกระเป๋าของฉัน, 2, 6, 8คำตอบสุดท้ายของฉันจะลดลงไป เหล่านี้คือค่าที่ฉันรู้ว่าฉันสามารถผลิตได้จากกระเป๋าของฉันกำหนดจำนวนเงินทั้งหมดและราคาที่เป็นไปได้
ตัวอย่าง I / O จากการคำนวณด้วยมือ
7 [3, 4]
3, 4, 7 //only one possible division into 3 + 4
7 [3, 2]
2, 3, 4, 5, 7 //the only division is 3 + 2 + 2
6 [2, 3, 4]
6 //divisions are 2+2+2, 3+3, 2+4
16 [1, 5, 10, 25] //this represents one of the examples above
1, 5, 6, 10, 11, 15, 16
27 [1, 5, 10, 25] //another example from above
1, 2, 25, 26, 27
1500 [1, 5, 10, 25, 100, 500, 1000, 2000]
500, 1000, 1500
600 [100, 500, 1000, 2000]
100, 500, 600
600 [200, 1, 5, 10, 25, 100, 500, 1000, 2000]
600
6 [2, 3, 4]ฉันไม่เห็นวิธีการที่คุณจะได้รับ ไม่สามารถ2+2+2สร้าง 3 และ3+3ไม่สร้าง 2 และ 4 ได้หรือไม่