কম্পিউটার

পাইথনে উপাদান পুনর্বিন্যাস করে একটি তালিকার শক্তির সর্বোচ্চ মান পেতে প্রোগ্রাম


ধরুন আমাদের কাছে N ধনাত্মক সংখ্যার একটি তালিকা রয়েছে। এখন আমরা তালিকা থেকে যেকোনো একক মান নির্বাচন করতে পারি এবং এটিকে যেকোনো অবস্থানে নিয়ে যেতে পারি (অদলবদল নয়)। আমরা কোনো অবস্থানে সরাতে পারি না। তাই আমাদের খুঁজে বের করতে হবে তালিকার সর্বোচ্চ সম্ভাব্য চূড়ান্ত শক্তি কী? যেমনটি আমরা জানি একটি তালিকার শক্তি হল সমস্ত সূচকের সমষ্টি (সূচক + 1) * value_at_index i.

$$\displaystyle\sum\limits_{i=0}^{n-1} (i+1)\time list[i]$$

সুতরাং, ইনপুট যদি nums =[6, 2, 3] এর মত হয়, তাহলে আউটপুট হবে 26, যেহেতু আমরা তালিকা পেতে 6 কে শেষ পর্যন্ত নিয়ে যেতে পারি [2, 3, 6] তাই পাওয়ার হল:(2) * 1) + (3 * 2) + (6 * 3) =26.

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

  • P :=মান 0

    সহ একটি তালিকা
  • ভিত্তি :=0

  • প্রতিটি সূচক i এবং A এর মান x এর জন্য করুন

    • P

      এর শেষে P + x এর শেষ উপাদান সন্নিবেশ করান
    • base :=base + (i+1) * x

  • উত্তর :=ভিত্তি

  • প্রতিটি সূচকের জন্য i এবং মান x এ A, করুন

    • 0 থেকে A + 1 এর আকারের মধ্যে j এর জন্য, করুন

      • উত্তর :=সর্বাধিক উত্তর এবং (বেস + P[i] - P[j] -(i - j) * x)

  • উত্তর ফেরত দিন

উদাহরণ

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

class Solution:
   def solve(self, A):
      P = [0]
      base = 0
      for i, x in enumerate(A, 1):
         P.append(P[-1] + x)
         base += i * x
      ans = base
      for i, x in enumerate(A):
         for j in range(len(A) + 1):
            ans = max(ans, base + P[i] - P[j] - (i - j) * x)
      return ans
ob = Solution()
nums = [6, 2, 3]
print(ob.solve(nums))

ইনপুট

[6, 2, 3]

আউটপুট

26

  1. পাইথনে টিপলের তালিকায় সর্বাধিক মান সহ প্রথম উপাদান পান

  2. পাইথন প্রোগ্রামে তালিকায় উপাদানের যোগফল খুঁজুন

  3. পাইথন প্রোগ্রাম তালিকায় উপাদানের যোগফল খুঁজে বের করতে

  4. একটি তালিকা থেকে N বৃহত্তম উপাদান খুঁজে পেতে পাইথন প্রোগ্রাম