কম্পিউটার

পাইথনে ক্রয়-বিক্রয় করার পর আমরা সর্বাধিক মুনাফা অর্জন করতে পারি


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

সুতরাং, ইনপুট যদি দামের মত হয় =[7, 3, 5, 2, 3] k =2, তাহলে আউটপুট হবে 3, যেমন আমরা 3 এ কিনতে পারি, তারপরে 5 এ বিক্রি করতে পারি, আবার 2 এ কিনুন এবং বিক্রি করতে পারি। 3 এ।

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

  • একটি ফাংশন dp() সংজ্ঞায়িত করুন। এটি i, k, কেনা
  • লাগবে
  • যদি i দামের আকারের সমান হয় বা k 0 এর সমান হয়, তাহলে
    • রিটার্ন 0
  • যদি কেনা সত্য হয়, তাহলে
    • সর্বোচ্চ (dp(i+1, k-1, False) + মূল্য[i]) এবং dp(i+1, k, কেনা)
  • অন্যথায়,
    • সর্বোচ্চ (dp(i+1, k, True) - দাম[i]) এবং dp(i + 1, k, কেনা)
  • মূল পদ্ধতি থেকে dp(0, k, False) কল করুন এবং ফলাফল ফেরত দিন

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

উদাহরণ

শ্রেণির সমাধান:def solve(self, prices, k):def dp(i, k, bought):if i ==len(prices) অথবা k ==0:রিটার্ন 0 যদি কেনা হয়:রিটার্ন max(dp( i + 1, k - 1, False) + মূল্য[i], dp(i + 1, k, কেনা)) অন্য:রিটার্ন সর্বোচ্চ(dp(i + 1, k, True) - দাম[i], dp( i + 1, k, কেনা)) রিটার্ন dp(0, k, False)ob =Solution()prices =[7, 3, 5, 2, 3]k =2print(ob.solve(prices, k)) 

ইনপুট

[7, 3, 5, 2, 3], 2

আউটপুট

3

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

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

  3. স্ট্রিংয়ের সংখ্যা খুঁজে বের করার জন্য প্রোগ্রাম আমরা তৈরি করতে পারি যেখানে 'a' 'a' বা 'b' হতে পারে এবং 'b' পাইথনে 'b' থাকে

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