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

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

ধরা যাক একটি কোম্পানির স্টক প্রাইসের লিস্ট ক্রোনোলজিকল অর্ডারে দেওয়া আছে। আমাদের সেই স্টক কেনা-বেচা করে সর্বাধিক লাভ বের করতে হবে। শর্তগুলো: কেনার আগে অবশ্যই কেনা লাগবে, এবং বিক্রি করার পর কেনার জন্য এক দিন অপেক্ষা করতে হবে (cooldown period)।

উদাহরণ

ইনপুট: prices = [2, 6, 9, 4, 11]

আউটপুট: 11

ব্যাখ্যা: ২-এ কিনে ৬-এ বিক্রি, এক দিন অপেক্ষা, ৪-এ কিনে ১১-এ বিক্রি। মোট লাভ ১১।

সমাধানের ধাপসমূহ

  1. s := 0 (স্টক না থাকার অবস্থার সর্বাধিক লাভ)
  2. b := -infinity (স্টক থাকার অবস্থার সর্বাধিক লাভ)
  3. i = 0 থেকে len(prices)-1 পর্যন্ত লুপ চালান:
    • temp := b
    • b := max(b, s - prices[i])
    • যদি i != 0 হয়, তবে s := max(s, temp + prices[i-1])
  4. max(s, b + prices[-1]) ফেরত দিন

পাইথন ইমপ্লিমেন্টেশন

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
  1. পাইথনে স্টক মার্কেটে একাধিকবার কেনা-বেচা করে সর্বাধিক লাভ বের করার প্রোগ্রাম

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

  3. পাইথনে 'a' কে 'a' বা 'b' এবং 'b' কে 'b' রেখে বানানো সম্ভাব্য স্ট্রিং সংখ্যা বের করার প্রোগ্রাম

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