สมมติว่ามีจักรยาน n คัน แต่ละคันวิ่งได้ 100 กม. เมื่อเติมน้ำมันเต็ม ถัง น้ำมัน 1 ลิตร วิ่งได้ 1 กม. ต้องการหาระยะทางสูงสุดที่เดินทางได้โดยการโอนน้ำมันระหว่างจักรยาน
เช่น n = 3, fuel = 100 ผลลัพธ์คือ 183.33
ขั้นตอนการแก้ปัญหา
- เริ่มต้น
covered_distance = 0 - วนลูป while n > 0:
covered_distance += fuel / nn -= 1
- คืนค่า
covered_distance
หลักการ: ให้จักรยานวิ่งร่วมกันจนถังน้ำมันของคันหนึ่งจะหมด โอนน้ำมันให้คันอื่นเต็ม แล้วทิ้งคันที่หมด ไปเรื่อยๆ
ตัวอย่างโค้ด Python
def maximum_distance(n, fuel):
covered_distance = 0
while n > 0:
covered_distance += fuel / n
n -= 1
return covered_distance
n = 3
fuel = 100
print(maximum_distance(n, fuel))
อินพุต
3, 100
เอาต์พุต
183.33333333333334