কম্পিউটার

পাইথনে ফি দিয়ে স্টক ক্রয়-বিক্রয় করে সর্বাধিক মুনাফা পেতে পারি?


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

সুতরাং, ইনপুট যদি দামের মত হয় =[2, 10, 4, 8] ফি =3, তাহলে আউটপুট হবে 6, যেহেতু আমরা 2-এ কিনতে পারি এবং 10-এ বিক্রি করতে পারি এবং 3 ফি দিতে পারি, তাই লাভ 5। তারপরে আমরা 4 এ কিনব এবং 8 এ বিক্রি করব এবং 3 টাকা ফি দিতে হবে, তাই লাভ 1, মোট লাভ 6।

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

  • n :=দামের আকার

  • একটি ফাংশন recur() সংজ্ঞায়িত করুন। এটি i:=0 এবং পতাকা:=0

    লাগবে
  • যদি আমি n এর মত হয়, তাহলে

    • রিটার্ন 0

  • যদি পতাকা মিথ্যা হয়, তাহলে

    • রিকার সর্বোচ্চ রিটার্ন (i + 1, 1) - দাম[i] এবং recur(i + 1, 0)

  • রিকার (i + 1, 1) এবং recur (i + 1, 0) + মূল্য[i] - ফি

  • মূল পদ্ধতি থেকে 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-এর সমান যোগফল নির্ণয় করুন - সেট-2

  4. পাইথনে সর্বাধিক Bitwise AND এবং Bitwise OR সহ পরবর্তীগুলি খুঁজুন