Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหากำไรสูงสุดจากการซื้อขายหุ้นหลายครั้งใน Python

ให้ลิสต์ราคาหุ้นตามลำดับเวลา ซื้อขายได้หลายครั้ง (ต้องซื้อก่อนขาย) หากำไรสูงสุด

ตัวอย่าง: [10,50,30,40,60] → 70 (ซื้อ10ขาย50, ซื้อ30ขาย60)

อัลกอริธึม Greedy

  • สะสมกำไรทุกครั้งที่ราคาวันนี้ > ราคาเมื่อวาน
  • เทียบเท่ากับซื้อที่谷底 ขายที่ยอดเขา ทุกคู่

การนำไปใช้

class Solution:
    def solve(self, prices):
        prev_price = float('inf')
        profit = 0
        for p in prices:
            if p > prev_price:
                profit += p - prev_price
            prev_price = p
        return profit

ob = Solution()
print(ob.solve([10, 50, 30, 40, 60]))  # 70