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

โปรแกรมหากำไรสูงสุดที่เราสามารถทำได้โดยการซื้อและขายหุ้นใน Python?


สมมติว่าเรามีรายการราคาหุ้นของบริษัทตามลำดับเวลา เราต้องหากำไรสูงสุดที่เราสามารถทำได้จากการซื้อและขายหุ้น เราต้องซื้อก่อนขาย และเราต้องรอหนึ่งวันหลังจากขายหุ้นก่อนซื้อใหม่

ดังนั้นหากอินพุตเป็นเหมือนราคา =[2, 6, 9, 4, 11] แล้วผลลัพธ์จะเป็น 11 ตามที่เราสามารถซื้อได้ที่ 2 แล้วขายที่ 6 รอวันแล้วซื้อที่ 4 และ แล้วขายตอน 11 โมง

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:

  • s :=0

  • b :=-อินฟินิตี้

  • สำหรับผมอยู่ในช่วง 0 ถึงขนาดของราคาทำ

    • อุณหภูมิ :=b

    • b :=สูงสุดของ b และ (s - ราคา[i])

    • ถ้าฉันไม่เป็นศูนย์แล้ว

      • s :=สูงสุดของ s และ (ชั่วคราว + ราคา[i - 1])

  • คืนค่าสูงสุดของ s และ (b + องค์ประกอบสุดท้ายของราคา)

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น:

ตัวอย่าง

class Solution:
   def solve(self, prices):
      s = 0
      b = float("-inf")
      for i in range(len(prices)):
         temp = b
         b = max(b, s - prices[i])
         if i:
            s = max(s, temp + prices[i - 1])
      return max(s, b + prices[-1])

ob = Solution()
prices = [2, 6, 9, 4, 11]
print(ob.solve(prices))

อินพุต

[2, 6, 9, 4, 11]

ผลลัพธ์

11