কম্পিউটার

পাইথনে একটি অপারেশনের পরে সর্বাধিক সাবয়ারের যোগফল খুঁজে বের করার প্রোগ্রাম


ধরুন, আমাদেরকে পূর্ণসংখ্যা সম্বলিত একটি অ্যারে দেওয়া হয়েছে। আমরা একটি অপারেশন করতে পারি যেখানে আমরা অ্যারে[i] এর মানকে এর বর্গ মান দিয়ে প্রতিস্থাপন করতে পারি; বা অ্যারে[i] * অ্যারে[i]। এই ধরনের শুধুমাত্র একটি অপারেশন অনুমোদিত এবং আমাদের অপারেশনের পরে সর্বাধিক সম্ভাব্য সাবারের যোগফল ফেরত দিতে হবে। সাবয়ারে খালি হতে পারে না৷

সুতরাং, যদি ইনপুট অ্যারে =[4, 1, -2, -1] এর মত হয়, তাহলে আউটপুট হবে 17।

যদি আমরা অ্যারে [0]-এর মানকে এর বর্গ মান দিয়ে প্রতিস্থাপন করি, তাহলে অ্যারেটি [16, 1, -2, -1] হয়ে যায়। এটি থেকে সর্বাধিক সাবয়ারে সম্ভব [16, 1], এবং এটির সর্বাধিক যোগফল মান 16 + 1 =17।

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

  • dp1 :=নেতিবাচক অসীম মান ধারণকারী একটি নতুন তালিকা
  • dp2 :=নেতিবাচক অসীম মান ধারণকারী একটি নতুন তালিকা
  • অ্যারের প্রতিটি সংখ্যার জন্য, করুন
    • dp1-এর শেষে সর্বাধিক (dp1 + num-এর শেষ উপাদান), num) সন্নিবেশ করুন
    • dp2-এর শেষে সর্বাধিক (dp1 + num^2-এর ​​দ্বিতীয় শেষ উপাদান), num^2, (dp2 + num-এর শেষ উপাদান)) সন্নিবেশ করুন
  • dp2 এর সর্বোচ্চ উপাদান ফেরত দিন

উদাহরণ

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

def solve(array):
   dp1 = [float('-inf')]
   dp2 = [float('-inf')]
   for num in array:
      dp1.append(max(dp1[-1] + num, num))
      dp2.append(max(dp1[-2] + num**2, num**2, dp2[-1]+num))
   return max(dp2)

print(solve([4, 1, -2, -1]))

ইনপুট

[4, 1, -2, -1]

আউটপুট

17

  1. পাইথনে সাব-ট্রির নোড মানের সমষ্টি থেকে ন্যূনতম মান বের করার প্রোগ্রাম

  2. পাইথনের একটি প্রদত্ত বাইনারি ট্রিতে একটি BST-এর বৃহত্তম সমষ্টির মান খুঁজে বের করার প্রোগ্রাম

  3. পাইথন প্রোগ্রামে অ্যারের সমষ্টি খুঁজুন

  4. অ্যারের যোগফল খুঁজে পেতে পাইথন প্রোগ্রাম