นี่คือโจทย์การเขียนโปรแกรมแนวสนุกเกี่ยวกับพีชและเมล็ดพีช โดยมีเงื่อนไขของโจทย์ดังนี้:
- เริ่มต้นด้วยจำนวนเงินหนึ่งส่วน และจำนวนเมล็ดพีชหนึ่งส่วน
- ในแต่ละครั้ง สามารถใช้เงิน 1 หยวนเพื่อซื้อพีช 1 ลูก หรือใช้เมล็ดพีช 3 เมล็ดแลกพีช 1 ลูก
- เมื่อกินพีช 1 ลูก จะได้รับเมล็ดพีชเพิ่ม 1 เมล็ด
เป้าหมายสุดท้ายคือ: กินพีชให้ได้มากที่สุดเท่าที่จะทำได้ ต่อไปนี้คือแนวคิดการแก้ปัญหาอย่างครบถ้วนและโค้ดตัวอย่าง
แนวคิดการแก้ปัญหา
หัวใจสำคัญของโจทย์นี้อยู่ที่การใช้คุณค่าของเมล็ดพีชให้เกิดประโยชน์สูงสุด และหลีกเลี่ยงการสูญเปล่า โดยขั้นตอนโดยรวมมีดังนี้:
- ในแต่ละขั้น พยายามแปลงมูลค่าของเมล็ดพีชให้เป็นเงิน เพื่อให้เงินโดยรวมมากที่สุด
- หากเงินพอ ให้ซื้อพีช 1 ลูก แล้วกินทันที
- เมื่อไม่สามารถซื้อได้อีก ให้ตรวจสอบว่า “แลกเพิ่มอีกครั้ง” ได้หรือไม่ เพื่อให้การใช้ทรัพยากรเกิดประสิทธิภาพสูงสุด
โค้ดโปรแกรม
ด้านล่างคือโค้ดเต็มรูปแบบที่เขียนด้วย Python
money = 10
peach_pits = 0
peaches_eaten = 0
while True:
money += peach_pits / 3
peach_pits = 0
if money < 1:
if money + 1/3 >= 1:
money += 1/3
peach_pits -= 1
else:
break
money -= 1
peaches_eaten += 1
peach_pits += 1
print(f"总共吃了 {peaches_eaten} 个桃子")