কম্পিউটার

পাইথনে সর্বাধিক দুইবার স্টক ক্রয়-বিক্রয়ের পরে সর্বাধিক লাভের সন্ধান করার প্রোগ্রাম


ধরুন আমাদের কাছে প্রাইস নামে একটি সংখ্যার তালিকা আছে এবং এটি একটি কোম্পানির স্টক মূল্যকে কালানুক্রমিক ক্রমে উপস্থাপন করছে, আমাদেরকে সেই স্টক কেনা এবং বিক্রি করে সর্বাধিক দুইবার লাভ করতে হবে তা খুঁজে বের করতে হবে। আমাদের আগে কিনতে হবে তারপর বিক্রি করতে হবে।

সুতরাং, ইনপুট যদি দামের মত হয় =[2, 6, 3, 4, 2, 9], তাহলে আউটপুট হবে 11, যেমন আমরা 2 দামে কিনতে পারি, তারপর 6-এ বিক্রি করতে পারি, আবার 2-এ কিনুন এবং বিক্রি করতে পারি। 9 এ।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • first_buy :=-inf, first_sell :=-inf
  • second_buy :=-inf, second_sell :=-inf
  • প্রতিটি পিক্সের দামের জন্য, করুন
    • first_buy :=first_buy এবং -px-এর সর্বাধিক
    • first_sell :=first_sell এবং (first_buy + px) সর্বাধিক
    • সেকেন্ড_বাই :=সেকেন্ড_বাই এবং (প্রথম_বিক্রয় - পিএক্স)
    • সেকেন্ড_সেল :=সর্বাধিক সেকেন্ড_সেল এবং (সেকেন্ড_বাই + পিএক্স)
  • সর্বোচ্চ রিটার্ন 0, first_sell এবং second_sell

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

class Solution:
   def solve(self, prices):
      first_buy = first_sell = float("-inf")
      second_buy = second_sell = float("-inf")
      for px in prices:
         first_buy = max(first_buy, -px)
         first_sell = max(first_sell, first_buy + px)
         second_buy = max(second_buy, first_sell - px)
         second_sell = max(second_sell, second_buy + px)
      return max(0, first_sell, second_sell)

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

ইনপুট

[2, 6, 3, 4, 2, 9]

আউটপুট

11

  1. পাইথনে আমরা কতগুলো উপায়ে সিঁড়ি বেয়ে উঠতে পারি (সর্বাধিক k বারে সর্বোচ্চ ধাপ) খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে একাধিকবার স্টক মার্কেটে কেনার মাধ্যমে আমরা সর্বাধিক লাভ পেতে পারি তা খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে একবার স্টক মার্কেটে কেনার মাধ্যমে আমরা সর্বাধিক লাভ পেতে পারি তা খুঁজে বের করার প্রোগ্রাম

  4. পাইথন প্রোগ্রাম একটি তালিকায় সর্বাধিক এবং সর্বনিম্ন উপাদানের অবস্থান খুঁজে পেতে?