কম্পিউটার টিউটোরিয়াল

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


ধরি আমাদের একটি নাম্বার লিস্ট prices আছে যা একটি কোম্পানির স্টক প্রাইস ক্রোনোলজিকাল অর্ডারে রিপ্রেজেন্ট করে। আমাদের সর্বোচ্চ দুবার বায় এবং সেল করে সর্বোচ্চ প্রফিট বের করতে হবে। আগে বায় করতে হবে তারপর সেল।

তাই, ইনপুট যদি prices = [2, 6, 3, 4, 2, 9] হয়, তবে আউটপুট হবে ১১, কারণ ২-এ বায় করে ৬-এ সেল, আবার ২-এ বায় করে ৯-এ সেল করলে প্রফিট ১১ হয়।

সমাধানের ধাপগুলো:

  • first_buy := -inf, first_sell := -inf
  • second_buy := -inf, second_sell := -inf
  • প্রতিটি px ইন 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)
  • max(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 বার 3 ধাপ)

  2. পাইথনে স্টক মার্কেটে একাধিকবার কেনা-বেচা করে সর্বাধিক লাভ বের করার প্রোগ্রাম

  3. পাইথনে স্টক মার্কেটে একবার কেনা-বেচা করে সর্বাধিক লাভ বের করার প্রোগ্রাম

  4. পাইথনে লিস্টে সর্বোচ্চ ও ন্যূনতম উপাদানের পজিশন বের করার প্রোগ্রাম