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

পাইথনে ট্রানজ্যাকশন ফি সহ স্টক কেনা-বেচা করে সর্বাধিক লাভ বের করার প্রোগ্রাম

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

উদাহরণ

ইনপুট: prices = [2, 10, 4, 8], fee = 3

আউটপুট: 6

ব্যাখ্যা: ২-এ কিনে ১০-এ বিক্রি করলে লাভ ৫ (ফি ৩ বাদে)। আবার ৪-এ কিনে ৮-এ বিক্রি করলে লাভ ১। মোট লাভ ৬।

সমাধানের ধাপসমূহ (রিকার্শন + মেমোইজেশন)

  1. n := len(prices)
  2. recur(i=0, flag=0) ফাংশন সংজ্ঞায়িত করুন:
    • যদি i == n হয়, তবে 0 ফেরত দিন
    • যদি flag == False (স্টক কেনা বাকি), তবে:
      • max(recur(i+1, 1) - prices[i], recur(i+1, 0)) ফেরত দিন
    • অন্যথায় (স্টক কেনা হয়েছে), তবে:
      • max(recur(i+1, 1), recur(i+1, 0) + prices[i] - fee) ফেরত দিন
  3. মূল মেথড থেকে recur() কল করুন

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

class Solution:
    def solve(self, prices, fee):
        n = len(prices)
        def recur(i=0, flag=0):
            if i == n:
                return 0
            if not flag:
                return max(recur(i + 1, 1) - prices[i], recur(i + 1, 0))
            return max(recur(i + 1, 1), recur(i + 1, 0) + prices[i] - fee)
        return recur()

ob = Solution()
prices = [2, 10, 4, 8]
fee = 3
print(ob.solve(prices, fee))

ইনপুট

[2, 10, 4, 8], 3

আউটপুট

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

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

  3. পাইথনে N-এর চারটি ফ্যাক্টর বের করা যাতে যোগফল N এবং গুণফল সর্বাধিক

  4. পাইথনে বিটওয়াইজ AND ও OR-র সর্বোচ্চ যোগফল দিয়ে সাবসিকোয়েন্স খুঁজে বের করা